问几道C语言中的题目

1.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>。输出结果是
#include "stdio.h"
main()
{
char a,b;
a=getchar(); scanf("%d",&b);
a=a-A+0;
b=b*2;
printf("%c %c",a,b);
}: 答案:程序段有语法错
2.以下程序运行时若从键盘输入:10 20 30<回车>。输出结果是____。
#include
main()
{
int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d",i,j,k);
}:答案:10,30,0 为什么不是10,0,30
3.执行以下程序时输入1234567,则输出结果是________。
#include
main()
{
int a=1,b;
scanf("%2d%2d",&a,&b);printf("%d %d\n",a,b);
} 正确答案:12 34
4.有以下程序:
main( )
{ int a=0,b=0;
a =10; /*给a赋值
b=20; 给b赋值 */
printf("a+b=%d\n",a+b); /*输出计算结果*/
}
程序运行后的结果是: a+b=10 为什么不是a+b=30
5.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为__ 正确答案:3 为什么不是3,2
6.设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是:答案:C
• A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m
7.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是:B
A)kk>='A'&&kk<=’Z’B)!(kk>='A'‖kk<=’Z’C)(kk+32)>='a'&&(kk+32)<=’Z’D)isalpha(kk)&&(kk<91)(isalpha()函数的功能是判断一个参数是否为字母)
8.当变量c的值不为2、4、6时,值也为“真”的表达式是 :B
A)(c==2)‖(c==4)‖(c==6) B)(c>=2&&c<=6)‖(c!=3) ‖(c!=5)C) (c>=2&&c<=6)&&!(c%2)D)(c>=2&&c <=6)&&(c%2!=1)
9.下列条件语句中,功能与其他语句不同的是:D
A)if(a) printf("%d\n",x); else printf("%d\n",y);B)if(a==0) printf("%d\n",y); else printf("%d\n",x);
C)if (a!=0) printf("%d\n",x); else printf("%d\n",y);D)if(a==0) printf("%d\n",x); else printf("%d\n",y);
10.有以下程序
#include
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2: a++; b++; break;
case 3: a++; b++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果是 : 答案: a=2,b=1
11.有以下程序
main()
{ int y=10;
while(y--); printf("y=%d\n",y);
}
程序执行后的输出结果是:答案:y=-1
12.有以下程序
main()
{
int k=5;
while(--k) printf("%d",k-=3);
printf("\n");
}
执行后的输出结果是:答案:1
13.有以下程序
main()
{
int k=5,n=0;
do
{
switch(k)
{
case 1: case 3:n+=1; break;
default :n=0;k--;
case 2: case 4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
程序运行后的输出结果是: 答案:2345
14.以下程序的功能是:将输入的正整数按逆序输出。例如,若输入135,则输出531,请填空。
#include <stdio.h>
main()
{
int n,s;
printf("Enter a number:"); scanf("%d",&n);
printf("Output: ");
do
{
s=n%10; printf("%d",s);
_____;
} while(n!=0);
printf("\n");
} 正确答案:n/=10
15.有以下程序
#include <stdio.h>
main()
{
int x=8;
for( ; x>0; x--)
{
if(x%3)
{
printf("%d, ",x--);
continue;
}
printf("%d, ",--x);
}
}
程序的运行结果是 : 答案:8,5,4,2
真的没人会吗``哭``

对于第一题:我认为应该如下
#include "stdio.h"
main()
{
char a;
int b;
a=getchar(); scanf("%d",&b);
a=a-'A'+0;
b=b*2;
printf("%c %d",a,b);
}
对于第二题:在scanf函数中,符号*表示在本项读入后不赋值给相应的变量,抑制本次的输入,也就是这项的数值输了也白输。就该题而言,当输入10 20 30时,由于*号出现在第二项,则第二项20就被抑制输入了,由紧接的下一项30代替,而第三项因为没有多余数据输入,保持原来的0不变。
对于第三题:必须了解scanf("%2d%2d",&a,&b);中%2d的含义,它表示输入数据的宽度是2.这你就知道了吧?
对于第四题:我运行了一下,结果是a+b=30,会不会是你弄错了,或者和编译的系统有关?
对于第五题:我们要知道逗号表达式的运算是从左向右运算,然后整个表达式的值是最后一个式子的值。对于该题,先把2给i,然后进行++i的运算,的i为3,最后整个式子的值为i++,即3
对于第六题:对于运算符%要求左右两边均为整型,而对于右边进行的f必须进行强制转换,形式为(int)(f) 。这是特别需要引起注意的,int两边一定要有括号,否则就不是强制转换了。
对于第七题:对于b选项只要一个范例就可以,a代入kk>='A'为真,则kk>='A'‖kk<=’Z’为真,则会整个式子为假,将A代入kk>='A'为真,则kk>='A'‖kk<=’Z’为真,则会整个式子为假。判断不出大小写字母。
对于第八题:就重点说下B选项,对于符号‖来说,当左边为真的时候,右边的式子就不执行了,只有当左边是假的时候才执行右边的。对于在2到6之间的数,左边(c>=2&&c<=6)为真,停止执行,整个式子为真,对于该范围以外的,左边(c>=2&&c<=6)为假,执行中间的(c!=3),为真,整个式子为真。
对于第九题:功能相同的都表示a为0的时候。输出y,a不是0的时候,输出x。也许你颇有疑问的是a选项。对于该选项,我们得看if(a) 表示什么含义,只要a是不为0,if语句就会判断条件为真,就执行下面的语句。
对于第十题:我们必须看清case 2: a++; b++; break;case 3: a++; b++; 这两个语句是属于switch(x)还是switch(y)的,显然是switch(x)的。一起来看,x=1,执行switch(y),又因为y=0,执行case 0: a++; break;此时,a=1,b=0.然后程序就跳到case 2前面的} 号,注意没有跳到整个程序外面,因为case 2前面的} 号的后面没有 break。然后就执行case 2: a++; b++; break,此时=2,b=1。程序结束。

对于第11题:特别注意while语句后面有分号,表示执行空语句。当表达式y--的值是0的时候,就会跳出空语句,执行下面的语句,而此时显然 y--是0,而y本身变成-1 。
对于第12题:k=5,执行while(--k)后,k的值为4,条件为真,就执行printf("%d",k-=3),得到k的值为1,接着while(--k)中的--k,得到k的值为0,条件为假,不执行printf("%d",k-=3)。
对于第13题:开始k=5,n=0;然后switch(k)判断,执行default :n=0;k--;由于后面没有break语句,就执行case 2: case 4:n+=2;k--;break;此时,n=2,k=3.满足k>0&&n<5,接着做,k=3,就执行case 3:n+=1; break;此时n=3,k=3.满足k>0&&n<5,接着做,执行case 3:n+=1; break;此时n=4,k=3,满足k>0&&n<5,接着做,case 3:n+=1; break;此时n=5,k=3,不满足,跳出循环,结束。

我不知道你14题哪里不明白?

对于15题:x=8,第一次执行for语句然后if语句判断8%3=2,为真,执行printf("%d, ",x--); 输出8,x本身为7,再执行continue继续循环,接着执行for语句中的x--,x为6。 第二次执行for语句,if判断,6%3=0,为假,直接执行printf("%d, ",--x);就输出5,x本身也是5.接着执行for语句中的x--,x为4。第三次执行for语句,if判断,4%3=1,为真,执行printf("%d, ",x--); 输出4,执行continue;接着执行for语句中的x--,x为3。第四次执行for语句,if判断,3%3=0,为假,直接执行printf("%d, ",--x);就输出2.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-06
第一个问题,b是char类型,不能用%d
第二个问题,%*d,表示跳过了20这个数,直接读取30
第三个问题,12 34(输出里面有空格)
第五个问题,因为i++中的i已经是前面那个++i中的3了
第2个回答  2010-02-06
哥们,你开玩笑吧,我第四题按代码敲就是30呀
第3个回答  2010-02-06
第一道题第5行应该是 scanf("%c",&b);
第4个回答  2019-08-03
1、
运行结果:
过程:
1、n=10
while(n>7){n--;printf("%d\n",n);}
这句话的while一共执行三次
也就是说n=9,n=8,n=7这三次
因为n--是给n自减1所以三次分别自减输出的结果是
9
8
7
2、这个程序首先要了解三个if的含义
++x是给x自加1
%2、%3、%7是可以分别被2、3、7整除
for(int
i=1;i<=100;i++)
是一共做这样的3个if做100次
运行结果:

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网