⑴ c语言题目
输出46
表达式++k值为2
跳转case 2分支,输出2*k,即4
由于没有break语句,继续向后执行输出3*k,即6
⑵ 《C语言程序设计》练习题
一、选择题
1、C语言规定,在一个源程序中,main()函数的位置(C )。
A) 必须在最开始 B)必须在最后
C) 可以任意 D) 必须在系统调用的库函数后面
这题你死记就行,你看看这个
任何一个C++程序都必须定义一个main函数,它的返回类型总是int类型。这个函数由操作系统来调用,在main函
数执行完以后,程序也就终止了。 main也可以使用return向操作系统返回一个值,使用操作系统的命令可以检测
main的返回值。一般约定在main返回0时,表示程序运行过程中没有出现错误,其它非零值表示程序出现异常情况。
若没有为main指定返回值,这样返回值是任意的。
2、若x和y都是int 型变量,x=100,y=200,且有以下程序段,printf(“%d”,(x,y));则其输出结果是( A)。
A) 200 B) 100 C) 100 200 D) 输出不确定值
(x,y)这是个逗号表达式,表达式的值为最后一个逗号后面表达式的值,因为前面有一个%d,所以输出 的是y的
值
3、合法的C语法字符常量是(C )。
A) “A” B) 65 C) ‘\t’ D) A
字符都是由两个单引号括起来的,死记, a)为字符串
4、表达式“3!=4”的值是(A )。
A) 1 B) 0 C) T D) F
!=是c语言的逻辑运算符,3!=4为真,多以得1, 3=4为假,值为0
5、 int a=1,b=2,c=3,d=4,执行下列程序后x的值为( C)。
if(a>b) x=1;else if (c>d) x=2;else x=3;
A) 1 B) 2 C) 3 D) 4
如果a>b,1>2为假,不执行x=1,执行else if(c>d),判断:3>4为假,不执行x=2,执行=3,完
6、以下程序的输出结果是(D)。
Int x=10,y=3,z;printf(“%d\n”,z=(x%y,x/y));
A)1 B) 0 C) 4 D) 3
逗号表达式,x%y,10%3,商3余1,模取余数1,x/y,10/3,商3余1,除法取商3,逗号表达式,表达式的值为最后一
个逗号后面表达式的值
7、为表示x≥y≥z,应使用C语言表达式(A )。
A) (x>=y)&&(y>=z) B) (x>=y) AND (y>=z)
C) (x>=y>=z) D) (x>=y) & (y>=z)
关系运算符,x>=y与y>=z必须是同时成立的,因此要用逻辑运算符&&,&&与的意思
8、合法的数组定义是( a )。
A) int a[ ]=”string”; B) int a[5]={0,1,2,3,4,5};
C) char a=”string”; D) char a[ ]={“01234”};
a不指定数组长度定义,正确
b数组长度为5,就是里面有5个数组元素,多了一个数组元素
c定义a不是数组而是一个变量,素组应该是a[]
d是错的,字符串是这样定义的:char a[ ]={'0','1','2','3','4','\0'};
[4]中数字是数组长度,说明里面有几个元素
9、设x和y均为int型变量,则语句“x+=y;y=x-y;x-=y;”的功能是(D)。
A) 把x和y按从小到大排列 B)把x和y按从大到小排列
C)无确定结果 D)交换x和y中的值
x+=y等同于x=x+y,把x加y的值赋给x,x现在存的是x与y的和
y=x-y把x减y的值赋给y,x现在存的是x与y的和 (x+y)-y=x,把x的值给y,y存x的值
x-=y等同于x=x-y,把x减y的值赋给x,(x+y)-y=x,现在的后面的y存的是x的值,做完后x里存的值是y,完成交换
10、若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是(C)。
A) 1 B)2 C) 2.0 D) 1.0
逗号表达式,先让x=1在算y=x+3/2,得2,因为是double类型,所以有小数点
11、下列条件语句中,功能与其他语句不同的是 (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);
a 如果a为真输出x,如果a为假输出y
b 如果a==0,也就是为假,输出y,a为真输出x,同a
c 如果a!=0为真,输出x,a为假输出y同上
d 如果a为假输出x,如果a为真输出y,与以上的都不同
12、以下能正确定义二维数组的是 (C)
A) int a[][3]; B) int a[][3]=2{2*3};
C) int a[][3]={0}; D) int a[2][3]={{1},{2},{3,4}};
a 没有给数组赋初值
b {}里不能有*
c 正确,记住第一个[]中可以为空,第二个[]不能为空,死记
d a[2][3] 的意思是有两个一维数组,每个一维数组里有3个元素,{{1},{2},{3,4}}; 她的意思是三个数组,{}中的每一个{}代表一个数组,里边的数为数组元素
13、用C语言编写的代码程序 (B)
A)可立即执行 B)是一个源程序
C)经过编译即可执行 D)经过编译解释才能执行
死记
⑶ C语言选择题:以下正确的程序段是:()
A对 字符数组赋值可以不用&,用了也是对的
B错 只有一个指针,但是这个指针并未指向可用的空间。
C错 虽然程序运行没问题,但是这样做是从s[2]开始写入.s[0]和s[1]是随机值.
前面0~1元素的数据不确定会导致后面不能完整用str索引 ,获取不到正确值
D错 str是什么,如果前面初始化为char str[20],也是错的,因为p[2]是一个字符,不是地址
所以A对,C的话 可以运行,但是获取的值不对,看你怎么认为该选项对不对了
望采纳
⑷ C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。
解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。
主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是代表的一维数组。比如name[3][20],为3行20列,那么name[0],它代表的是组成二维数组的第一维数组。又知道puts()括号里可以放一维数组名,可以输出它里面的字符串,对放name[0]的话,那就是输出3行20列中的第一行字符串。
通过for比较我们已经得出结果,即两次for循环都不符合条件,因此,m没有变化,=0。所以puts(nam[0])的话,就是输出Tony。
望楼主采纳。
⑸ C语言程序段 选择题
while 语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句!!!如果是假,就跳出循环;
那么1<=x<=2始终为真,所以是死循环;
如果换成x=0,那么打印一个#,就结束了!
如果换成x!=0,那么打印###,就结束了!
1<=x<=2是合法的,等于1<=x && x<=2
⑹ c语言程序题目
为了方便调试,我直接让随机数显示,你不要可以将它隐藏掉。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
intn,a,i=1;
srand(time(NULL));
n=rand()%100+1;
while(1)
{
system("cls");
printf("(第%d次猜%d)请输入要猜的数字:",i,n);
scanf("%d",&a);
if(a==n)//猜中
break;
if(a==-1)
{
printf("玩家终止程序!
");
return0;
}
i++;
}
if(i<=4)
printf("verygood
");
if(i>4&&i<=7)
printf("good
");
if(i>7&&i<=10)
printf("normal
");
if(i>10)
printf("差
");
return0;
}
⑺ C语言的题目
#include"stdio.h"
intmain(intargc,char*argv[]){
charch;
intuc,lc,di,oh;
uc=lc=di=oh=0;
printf("Pleaseenterastring('q'/'Q'end)... ");
while(scanf("%c",&ch)==1){
if(ch>='A'&&ch<='Z')
uc++;
elseif(ch>='a'&&ch<='z')
lc++;
elseif(ch>='0'&&ch<='9')
di++;
else
oh++;
if(ch=='q'||ch=='Q')
break;
}
printf("Uppercase: %d Lowercase: %d Numbers: %d Other: %d ",uc,lc,di,oh);
return0;
}
运行样例:
⑻ 一道C语言题:若有如下程序段,其中s,a,b,c均已定义为整型变量,且a,c均已赋值(c大于0)
for循环执行依次,s++,for循环从b=1执行到b=c,即给s加了c个1,即s=s+c=a+c。
⑼ 两道C语言题目
1.
for先执行第一个赋值语句,因为第一个赋值语句为空,不理,之后就判断
10>5,进入循环i++,再执行第三个赋值语句++b=6,之后再开始判断,再i++,再++b如此循环
当10>10时跳出循环,此时i=5
2.
while(1<=x<=2)这个是死循环
这样的表达式为逻辑判断,一步步的做出返回
先(1<=x)返回0或1
然后再判断(1<=x)<=2,返回0或1
所以返回值永远是1,所以是死循环
如果要写成判断,改为while(x>=1 &&x<=2)
⑽ 一道C语言题目
#include<stdio.h>
#include<stdlib.h>//头文件
#include <time.h>//头文件
int main()
{
int a[111],b[100],c[111],n,m,k=0,t,l=0,s;
scanf("%d%d",&n,&m);
srand((unsigned)time(NULL));//srand()就是给rand()提供种子
for(int i=0;i<50;i++)
{
a[i]=rand()%101;//对101取余;
}
for(int i=0;i<50;i++)
{
if(a[i]>n&&a[i]<=m)
{
c[l++]=a[i];//这个供冒泡排序用;
b[k++]=a[i];//这个供选择排序用;
printf("%d ",a[i]);//未排序前的序列;
}
}
printf(" ");
for(int i=0;i<k-1;i++)//选择排序
{
for(int j=i+1;j<k;j++)
{
if(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
}
for(int i=0;i<l;i++)//冒泡排序
{
for(int j=0;j<l-i-1;j++)
{
if(c[j]>c[j+1])
{
s=c[j];
c[j]=c[j+1];
c[j+1]=s;
}
}
}
for(int i=0;i<k;i++)
{
printf("%d ",b[i]);
}
printf(" ");
for(int i=0;i<l;i++)
{
printf("%d ",c[i]);
}
return 0;
}
根据你给的信息,代码大致就是这样;可能有些瑕疵,你再根据原题修改一下;希望能帮到你,望采纳;