小编Yu *_*Hao的帖子

为什么我的char数组不起作用?

char在程序中声明了一个数组,可以容纳12个字符.我通过程序访问这些值.但每次我尝试运行该文件时它都不会给我一个错误但在char数组中显示警告并且.exe​​停止执行.我的程序看起来像这样:

 int main(){
     char *data[] = {"A,H,H,A"};
     char* ahd_database[12] = {'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D', 'A', 'H', 'D'};

    printf("The first letter in index is %c", index[0]);
Run Code Online (Sandbox Code Playgroud)

但这没有成功.它发出的警告是:

Multiple markers at this line
- initialization makes pointer from integer without a cast [enabled by 
 default]
- (near initialization for 'ahd_database[7]') [enabled by default]
- (near initialization for 'ahd_database[6]') [enabled by default]
- (near initialization for 'ahd_database[5]') [enabled by default]
- (near initialization for 'ahd_database[4]') [enabled …
Run Code Online (Sandbox Code Playgroud)

c arrays

-1
推荐指数
1
解决办法
78
查看次数

为什么我没有'溢出错误'?

我根据'memcpy'手册页编写了这段小代码.我执行了它,但我没有得到任何错误.通常,我应该得到'seg fault',因为我试图将消息复制到小目的地.

char str1[1];
char str2[] = "Big Message";

memcpy(&str1, &str2, strlen(str2));
Run Code Online (Sandbox Code Playgroud)

c c++

-1
推荐指数
1
解决办法
240
查看次数

如果声明条件不满足,但程序仍然有效

我有一个简单的代码

def func(a,b):
    if (b>=3.0) and (b<=4.0):
        if (a>=3.0) and (a<=6.0):
            var_region='A'
        if (a>6.0) and (a<=11.0):
            var_region='B'
    if (b>4.0):
        var_region='C'

    region=var_region
    print region
    return region


Tmax=4.1
Tmin=3.0
T=Tmin
var=3.0
dT=0.1
while T<Tmax:
    calll=func(var,T)
    T=T+dT
Run Code Online (Sandbox Code Playgroud)

该计划的输出是:

A,A..........,C
Run Code Online (Sandbox Code Playgroud)

在while循环中,"T"的最终值为4.0,它打印"C"而不是"A".这是为什么?

python if-statement

-1
推荐指数
1
解决办法
77
查看次数

一个应该通过引用调用的函数不起作用

我需要通过引用调用返回值,

#include<stdio.h>
#include<conio.h>
#include<math.h>

int Splitting(int *,int);
int main()
{
    int x = 1234567891,x1=x,a1,b1,count=0;
    a1=Splitting(&x,count);
    b1=x;
    printf("a1=%d,b1=%d",a1,b1);
}


int Splitting(int *x,int count)
{
    int x1=*x,x2, a = 0, b = 0, a1 = 0, b1 = 0;

    /**Some code logic used**/
    a1=12345,b1=67891;
    x1 =(int *) a1;
    return b1;
}
Run Code Online (Sandbox Code Playgroud)

我需要返回值a1, b1

其中 b1 通过 return 语句和a1通过引用调用。所以我需要设置值x1=a1;它不起作用。

请建议。

c pointers pass-by-reference

-1
推荐指数
1
解决办法
114
查看次数

为什么我的程序在非闰年增加了一天?

这是我的计划,我根据投入的日期找到了一年中的日期.我还必须考虑闰年.我已经完成了所有这些,但当输入一年如12/31/1993时,我得到366这一天是不正确的,因为它不是闰年所以一年中的那一天应该是365.我已经测试过这是否是我的if声明,只是让程序只能测试闰年,并且如果它是一个非闰年就关闭.当输入相同的日期时,程序关闭,告诉我问题不在于我的if语句,而在于我的情况和开关.我不确定发生了什么,或者为什么在日期增加额外的一天.

#include <stdio.h>

int main(void){

    int month,day,year,day_number=0;

    printf("Enter a date in the form (01/02/1996): ");
    scanf("%d/%d/%d", &month,&day,&year);


    if(((year%4 == 0) && (year%100 !=0)) || (year%400==0)){
        goto two;
    }
    else{
        month=month;
        goto one;
    }

    one:
        switch(month)
        {
            case 1:day_number=day;
                break;
            case 2:day_number=31+day; //January+Febuary
                break;
            case 3:day_number=59+day; //January+Febuary+March
                break;
            case 4:day_number=90+day; //January+Febuary+March+April
                break;
            case 5:day_number=120+day; //January+Febuary+March+April+May
                break;
            case 6:day_number=151+day; //January+Febuary+March+April+May+June
                break;
            case 7:day_number=181+day; //January+Febuary+March+April+May+June+July
                break;
            case 8:day_number=212+day; //January+Febuary+March+April+May+June+July+August
                break;
            case 9:day_number=243+day; //January+Febuary+March+April+May+June+July+August+September
                break;
            case 10:day_number=273+day; //January+Febuary+March+April+May+June+July+August+September+October
                break;
            case 11:day_number=304+day; //January+Febuary+March+April+May+June+July+August+September+October+November
                break;
            case …
Run Code Online (Sandbox Code Playgroud)

c if-statement switch-statement

-1
推荐指数
1
解决办法
64
查看次数

int*和int之间有什么区别[size]

Case I: 
   int a[12];
   printf("%d",sizeof(a));

Case II:
    int *a = (int *)malloc(12*sizeof(int));
    printf("%d",sizeof(a));
Run Code Online (Sandbox Code Playgroud)

以上两个代码片段返回不同的输出,

  • 48 在第一种情况下
  • 4 在第二种情况下

为什么会这样?

c

-1
推荐指数
1
解决办法
95
查看次数

如何确保字典中的键(或值)具有指定的数据类型?

我的Python程序使用字典,并且有大量的“if”语句只是为了检查检索到的值的类型。

我想避免这种情况,而是以更编程正确的方式进行。

这是一个例子:

# golddb should only contain str keys and int values
golddb = dict()

def gainGold(playername):
  global golddb
  golddb[playername] += 1  # error may happen if I try to += a non-int type
  golddb[playername] = "hello"  # I want python to give an error when I try to assign a str to be a value in the dict
Run Code Online (Sandbox Code Playgroud)

python dictionary types

-1
推荐指数
1
解决办法
6031
查看次数

如何在C++中将字符添加到字符串的末尾

我有一个字符串存储tempP,因为我没有使用C++的经验.我想知道如何在字符串中添加一个单词.所以例如在C#中就是这样

tempP = tempP + "addtext";
Run Code Online (Sandbox Code Playgroud)

c++ string

-2
推荐指数
1
解决办法
4979
查看次数

strlen()和sizeof()之间的奇怪区别

我试图测试的差异sizeofstrlen,但我发现了一些奇怪的今天.代码如下.

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
        char a[]={"I am a boy"};
        char b[]={'I',' ','a','m',' ','a',' ','b','o','y'};
        cout << "sizeof(a) = " << sizeof(a) << endl << "sizeof(b) = " << sizeof(b) <<endl;
        cout << "strlen(a) = "<< strlen(a) << endl << "strlen(b) = " << strlen(b) << endl;
        return 0;

}
Run Code Online (Sandbox Code Playgroud)

结果如下:

sizeof(a) = 11
sizeof(b) = 10
strlen(a) = 10
strlen(b) = 11
Run Code Online (Sandbox Code Playgroud)

我知道结果的前三行,但我不明白为什么strlen(b)是11.有人可以帮我吗?

c++ sizeof strlen

-2
推荐指数
1
解决办法
3468
查看次数

如何用一位数求和?

我正在制作一个数字总和的程序,看看这个程序:

#include<iostream>
using namespace std;

int main(){

    int i, j;
    int sum=1;
    cout<<"Enter your sum: "<<endl;
    cin>>i;

    while(i>0){
        j=i%10;
        sum=sum+j;
        i=i/10;

    }
    cout<<"Sum: "<<sum;
    cout<<endl;
}
Run Code Online (Sandbox Code Playgroud)

因此,当我输入输出时,25它会将我作为输出7.

但是我希望在每个总和中用一个数字来表示,就像我输入的那样147.它给了我一个输出,10但我想1作为输出.

我知道它可以做到:

while(i>0){
        j=i%10;
        sum=sum+j;
        i=i/10;

    }
    cout<<"Sum: "<<sum/10;
Run Code Online (Sandbox Code Playgroud)

当然它会给我一个输出1.

但是当我键入一个数字时,185它给了我一个输出1..但我想要整数位数.

如果我输入,我想要该程序 185

输出必须假设为

1+8+5=14
1+4=5
Run Code Online (Sandbox Code Playgroud)

输出必须是5..所以请帮我解决这类问题.

c++

-2
推荐指数
1
解决办法
395
查看次数