c语言基础题库及详解答案知乎(c语言基础例题及答案)
C语言基础题,谁能帮忙解答一下,要有详细注释,谢谢
答案是:1 65 1.5 6.5
【解析】对于赋值符号,计算方向是从赋值符号右边往左计算的,所以我们看:
a = f /= c *= (x=6.5);
我们就能很容易地求出:
x = 6.5;
c = c * x = 10 * 6.5 = 65;(这里注意下,虽然c是字符型,但是整型也是可以赋给它的,毕竟字符也是和ASCII对应的,字符型的变量,既可以给一个字符,也可以给一个整型值,它也对应一个字符(ASCII对应一个字符),输出的时候,如果格式控制是%d,就是输出字符的ASCII值)
f = f / c = 1.5;(这里f是float型)
a = f; (f是float型,而a是整型,就只能取整了,因此是1)
两道c语言基础题求解析,谢谢
这要如何解析,第一题就是函数传参问题,实参和形参类型一致
第二题就是结构体变量的三种定义方式 D选项只是结构体类型的定义,不是结构体变量的定义
C语言的一些基础题
1 #include stdio.h
2 main()
3 { float s[5];
4 int I,sz=0;
5 for(I=0;I5;I++)
6 scanf("%d",s+I);
7 for(I=0;I5;I++)
8 sz+=s[I];
9 printf("\n%f",(float)sz);
10 }
A) 没有错误
B) 第4行错误
C) 第6行错误
D) 第9行错误
C s数组是实型,不能用整型输入
下列合法的数组定义是( )。
A) int a[]="string";
B) int a[5]={0,1,2,3,4,5};
C) char a="string";
D) char a[]={0,1,2,3,4,5};
D A.a[]是整形不对 B.有6个元素 C若是char a[]="string"; 就对了
以下程序段给数组所有的元素输入数据,请选择正确答案填入( )。
#include stdio.h
main()
{
int a[10],i=0;
while(i10)
scanf("%d",______);
}
A) a+(i++)
B) a[i+1]
C) a+i
D) a[i++]
D AC显然不对 B没有输入a[0]的值
设有:
static char str[]="Beijing";
则执行:
printf("%d\n",strlen(strcpy(str,"China")));
后的输出结果为( )。
A) 5
B) 7
C) 12
D) 14
A strcpy为字符串拷贝函数 strlen为字符串统计函数
阅读下面的程序
main()
{
inn[2],I,j,k;
for(I=0;I2;I++)
n[I]=0;
k=2;
for(I=0;Ik;I++)
for(j=0;jk;j++)
n[j]=n[I]+1;
printf("%d\n",n[k]);
}
上面程序的输出结果是( )。
A) 不确定的值
B) 3
C) 2
D) 1
题有问题
for(I=0;I2;I++)
n[I]=0;
初始化n[0],n[1]为0
4次循环
for(I=0;Ik;I++)
for(j=0;jk;j++)
n[j]=n[I]+1;
得n[0]=3,n[1]=4执行
printf("%d\n",n[2]); n[2]本身就不对,越界了
定义如下变量和数组:
int I;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )。For(I=0;I3;I++)
printf("%d ",x[I][2-I]);
A) 1 5 9
B) 1 4 7
C) 3 5 7
D) 3 6 9
A I=0输出(0)(2)=3,I=1输出X(1)(1)=5,I=2输出X(2)(0)=7
若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是( )。
A) a[g-c]
B) a[4]
C) a['d'-'c']
D) a['d'-c]
D A是不确定的值,B得5,C得2
Printf("%d\n",strlen("\t\"\065\xff\n));
A) 5
B) 14
C) 8
D) 输出项不合法,无正常输出
A 有5个逃逸字元
\t 水平制表符Tab
\" 双引号
\065 以8进制表示的5
\xff 以16进制表示的无名字符。打印出来显示为占两个字符位的空格
\n 换行符
若有以下定义和语句:
char s[10];
s="abcd";
printf("%s\n",s);
则输出的结果是( )。
A) 输出abcd
B) 输出a
C) 输出abcd
D) 编译不通过
D 字符串不能负值给地址应为s[]="abcd";
下述程序输出的结果是( )。
#include stdio.h
main()
{
char ch[7]={"65ab21"};
int I,s=0;
for(I=0;ch[I]='0'ch[I]='9';I+=2)
s=10*s+ch[I]-'0';
printf("%d\n",s);
}
A) 12ba56
B) 6521
C) 6
D) 62
C 第一次ch[0]=6第二次ch[2]=a跳出 s=6
下述函数引用中,( )是含有错误的。其中s的定义如下:
char s[10];
A) scanf("%10s",s);
B) printf("%.5s",s);
C) puts(s+3);
D) gets(s);
C 若字符串s[10]只有一个字符 如a \0,s+3指向的s[3]未分配内存
定义如下数组s:
char s[40];
若准备将字符串“This is a string.”记录下来,( )是错误的输入语句。
A) gets(s+2);
B) scanf("%20s",s);
C) for(I=0;I17;I++)
S[I]=getchar();
D) while((c=getchar())!='\n')
s[I++]=c;
C 只是输入This is a string.没有输入\n