谁有大一C语言考试题?快考试了,跪求题库··
一、单项选择题(每小题2分,共50分)
1、一个C程序的执行是从___A__。
A、本程序的main函数开始,到main函数结束
B、本程序的main函数开始,到本程序文件的最后一个函数结束
C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
2、C语言程序的基本单位是___C___。
A、程序行 B、语句
C、函数 D、字符
3、请选出可用作C语言用户标识符的一组标识符___B___。
A、void B、a3_b3 C、For D、2a
define _123 -abc DO
WORD IF ase sizeof
4、假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__ 。
A、4.500000 B、4
C、4.000000 D、2.000000
5、下列可以正确表示字符型常量的是___D__。
A、297 B、"a"
C、"\n" D、'\t'
6、在C语言中,要求运算数必须是整型的运算符是__D__。
A、/ B、++
C、*= D、%
7、C语言中,复合语句的构成是将一系列语句置于__C__。
A、begin与end之间
B、方框号“[ ]”之间
C、花括号“{ }”之间
D、圆括号“( )”之间
8、有如下程序段,对应正确的数据输入是___A___。
float x,y;
scanf(”%f%f”, x,y);
printf(”a=%f,b=%f”, x,y);
A、2.04回车 B、2.04,5.67回车
5.67回车
C、A=2.04,B=5.67回车 D、2.045.67回车
9、以下程序段的输出结果是___D__。
int a=5678;
printf(”%2d\n”, a);
A、提示出错、无结果 B、56
C、78 D、5678
10、已知:char ch='A';则下列表达式的值是__B__。
ch = (ch='A'ch='Z') ? (ch+32) : ch;
A、A B、a C、Z D、z
11、下列描述,正确的是___B__ 。
A、表达式3.91%5是合法的
B、用b=89作为while循环的条件是合法的
C、逗号表达式是没有值和类型的
D、字符型变量和int型变量的操作完全不同
12、阅读以下程序:
main()
{int x;
scanf("%d",x);
if(x--5) printf("%d",x);
else printf("%d",x++);
}
程序运行后,如果从键盘上输人5,则输出结果是__B__ 。
A、3 B、 4 C、 5 D、 6
13、下列程序的运行结果是___C__。
#include ”stdio.h”
main()
{ int k;
k=3;
switch(k)
{ case 1: printf(”%d\n”, k++);
case 2: printf(”%d\n”, k++);
case 3: printf(”%d\n”, k++);
case 4: printf(”%d\n”, k++);
break;
default: printf(”Full!\n”);
}
}
A、3 B、4 C、3 D、4
4 4
14、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、
m=2、n=1,则逻辑表达式(m==ab)(n==cd) 的值为__A__。
A、0 B、 1 C、2 D、 3
15、设x、y和temp均为long int型变量,则以下语句:
{temp=x; x=y; y=temp;} 的功能是__D__。
A、把x和y按从大到小排列
B、把x和y按从小到大排列
C、无确定结果
D、交换变量x和变量y的值
16、以下程序的输出结果是 ___A__ 。
main()
{int a, b;
for(a=1, b=1; a=100; a++)
{if(b=10) break;
if (b%3==1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
A、4 B、6 C、5 D、101
17、执行以下程序后输出的结果是___D__。
main()
{ int y=10;
do {y--;}
while(--y);
printf("%d\n",y--);}
A、-1 B、1 C、8 D、0
18、执行以下程序后输出的结果是___B__。
main()
{int i, j, w=0;
for(i=4; i; i--)
for(j=1;j=2;j++)
w=w+i*j; w=i*j;
printf("%d\n",w);
}
A、4 B、0 C、1 D、30
19、以下程序运行后,输出结果是__C__。
main()
{
int n[5]={3,3,3},i,k=2;
for(i=0;ik;i++) n[i]=n[i]+1;
printf("%d\n",n[k]);
}
A、4 B、9 C、3 D、不确定的值
20、以下程序的输出结果是 __A__ 。
f ( int a)
{int b=0;
static int c = 3;
b++; c++;
return(a+b+c);
}
main()
{int a = 2, i;
for(i=0;i3;i++) printf("%d\n",f(a));
}
A、 7 B、 7 C、 7 D、 7
8 9 10 7
9 11 13 7
21、设C程序如下:
#define ABC(x) x*x
#include"stdio.h"
main()
{int a=3,b;
b=ABC(a+1);
printf("b=%d", b); }
上述程序运行输出的结果是__D_ 。
A、b=4 B、b=a+1
C、b=16 D、b=7
22、以下程序的输出结果是__B__。
main()
{int i, a[10];
for(i=9;i=0;i--) a[i]=10-i;
printf("%d %d %d",a[1],a[6],a[9]);
}
A、1 6 9 B、9 4 1
C、9 6 1 D、3 5 7
23、若定义:float x=3.14159,*p=x;
则printf("%f\n",*p++);的输出结果为__C__ 。
A、无确定值 B、x的地址
C、3.14159 D、4.14159
24、以下程序的输出结果是___B__
main()
{char b[]="Language";
char *p=b;
printf("%c ",*(b+2));
p=p+7;
printf("%c\n",*p++);
}
A、2 7 B、n e C、a g D、n u
25、下列程序的输出结果是___A__。
#include "stdio.h"
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0}, i, s, *p;
p=a;s=0;
for(i=0;i=9;i++)
s+=*p++;
printf("%d\n", s);
}
A、45 B、44 C、0 D、9
二、判断题(每小题1分,共10分)
1.语句int *point;中的point是指针变量名。( T )
2.主函数和其它函数之间可以相互调用。( F )
3.puts( )和gets( )函数只能输入或输出一个字符。( F )
4. 可以对字符型数组元素进行整体输入、输出。( T )
5.do-while语句构成的循环不能用其他语句构成的循环来代替。( F )
6.在一个函数内的复合语句中定义的变量可以在本函数范围内有效。(F )
7.函数必须有返回值,否则不能使用函数。( F )
8.for(;;);语句相当于while(1);语句。( T )
9.C程序的执行总是从第一个定义的函数开始。( F )
10.C语言中的关键字专门用作语言的特定成分,而不能作为一般标识符使用。( T )
三、程序填空题(每空2分,共10分)
1、下面程序完成判断某一个数m是否为素数,如果是则输出"m is a prime!",否则就输出"m is not a prime!",请选择填空。
main()
{ int i, m;
scanf("m=%d", m);
for(i=2; im; i++)
{ if(m%i==0)
{ printf("%d is not a prime!\n", m); (1) }
else (2)
}
if(i==m) printf("%d is a prime!\n", m);
}
(1)、 A、break B、continue
C、break; D、continue;
(2)、 A、break B、break;
C、continue D、continue;
2、以下程序的功能是:求出用数字0至9组成没有重复数字且是13倍数的三位数的个数,请选择填空。
#includestdio.h
void main()
{ int i, j, k, w, count = 0;
for( (3) ; i=9; i++)
for(j=0;j=9; j++)
for(k=0; k=9;k++)
if( (4) )
{ w = i*100+j*10+k;
if( (5) )
count++;
}
printf("\n count=%d\n", count);
}
(3)、 A、i=0 B、i=1
C、i=9 D、i=-1
(4)、 A、i!=j B、i!=j ||j!=k
C、i!=j j!=k D、i!=j j!=k k!=i
(5)、 A、w%13=0 B、w/13=0
C、w%13==0 D、w/13==0
四、编程题(第1小题12分,第2小题18分,共30分)
1、从键盘输入一个4位数的正整数n,将该数反序输出。例如,若输入的是
1357,则输出的是7531。
要求:1)利用VC++编译系统进行调试、运行
2)对输入的正整数n的合法性进行检查
3)将源程序以“编程题1.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分
2、已知一组字符串a[27]="jjyyzzabcdefgJJYYZZABCDEFG"; 请编一程序,将其 中的小写字母换成其前一个字母,即z换成y,y换成x,...,b换成a,若是a则换成z。然后对数组a[27]从小到大排序,并输出排序后的字符串。
要求:1)利用VC++编译系统进行调试、运行
2)先输出原字符串(即未做任何改变的字符串),最后输出排序后
的字符串
3)将源程序以“编程题2.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分
大一c语言编程题
#include stdio.h
int main()
{
int n,a,b,c;
scanf("%d",n);
if(n100||n999)
printf("Input error!");
else
{
a=n/100;
b=n/10%10;
c=n%10;
printf("%d",a*a*a+b*b*b+c*c*c);
}
return 0;
}
大一C语言编程题
杨辉三角的那个题目,你自己都很明白了。。。完全可以自己做,这里给你点提示吧。。。
简单点,定义两个数组:
const int MAX=1000; //(大小根据需要你自己填)
int arrayA[MAX+1], arrayB[MAX+1]; //等程序编好调试通过了之后,记得回来思考一下为何这里要+1
然后初始化她们:
for(int i=0;i=MAX; i++)
arrayA[i]=arrayB[i]=0;
然后从三角的第二层开始,先预设数字,由于第一层就一个1,忽略了;从第二层开始:
arrayA[0]=arrayA[1]=1; //以后都是以arrayA为基础计算,然后把计算结果填入arrayB
无论哪个数组,第一个数字都是1,所以我们把arrayB的0号元素设为1,以后就不用再算它了。
arrayB[0]=1;
让用户输入一个数字,标识我们计算多少层(1~MAX):
int number;
printf("Please enter a number (1~%d): ", MAX);
scanf("%d", number);
检查number,如果不在1~MAX范围内,就提示错误并退出:
if (number1 || numberMAX){
printf("Invalid number!\n");
exit(-1);
}
如果是number为1,则打印一行结果退出;
printf("1\n");
if(number==1) exit(0);
如果是number为2,则打印两行结果退出;
printf("1 1\n");
if(number==2) exit(0);
对于其他情况,就需要计算了,现在计算开始:
int i, layer;
//这里的计算是迭代进行的,因此根据层数可能要计算多次
for (layer=2;layernumber;layer++){
for (i=0;iMAX arrayA[i]0;i++){
//遍历整个arrayA,从arrayB的第二个位置开始记入计算结果
arrayB[i+1]=arrayA[i]+arrayA[i+1];
}
//计算完毕之后,我们再把结果复制到arrayA
for (i=0;iMAX arrayB[i]0;i++){
arrayA[i]=arrayB[i];
}
//最后再把这一层的数据输出
for (i=0;iMAX arrayB[i]0;i++){
printf("%d ", arrayA[i]);
}
}
基本都在这里了(当然,也别指望把代码靠到一起就能直接运行,尽管已经没差几行了),动手试试吧,希望楼主不要辜负了一个热心人的心意^_^
如果你能把a作出来,基本上,用点心思就可以把b解决了,如果对于指针不太明白,可以先象a一样定义个全局数组存储数据,排序和查找两个函数,都直接操作这个数组,等程序调通了,再考虑把它改成指针的方式。
加油!
大一c语言编程题目
if(ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u' || ch=='A' || ch=='E' || ch=='I' || ch=='O' ||ch=='U')
return 1;
else
return 0;
sum应该初始化为0,
然后应该是sum++,不是sum+=++j。
大一c语言编程题目!!!!加急!!!!
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
2.程序源代码:
main()
{
float n,s=0,t=1;
for(n=1;n=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!+3!...+20!=%e\n",s);
}
3、设*最多的一行为第N行,编程实现:输入任意正数N输出相应*阵(如N=3
#include"stdio.h"
main()
{
int i,j,k;
for(i=0;i=3;i++)
{
for(j=0;j=2-i;j++)
printf(" ");
for(k=0;k=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i=2;i++)
{
for(j=0;j=i;j++)
printf(" ");
for(k=0;k=4-2*i;k++)
printf("*");
printf("\n");
}
}
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day0)
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
大一C语言编程题(要详细),谢谢!
建立一个数组aa[256],全初始化为0,
2)从头读字符串,每一个是存c中,在相应的aa[c]加1
3)如果aa中的奇数,大于1个,说明不可能是回文数
4)现在就是找最小的交换次数了,也就是把aa中的字每一个拿一半加上哪个奇数减1的一半,来作排列组合,这样最后要的字符串就定下来了,每个字符在这字符串中的号是定下来的,把这个号,和输入的字符串关联起来,来进行冒泡排序 ,如果交换就增加一次交换次数,最后比较所有的排列组合哪个次数最小,就完成
大一C语言编程题!!
好好考试,老弟。
#include stdio.h
#include stdlib.h
#include string.h
#pragma warning(disable: 4996)
int main()
{
char input[1024];
scanf("%s", input);
int numCnt = 0;
char max = input[0];
char min = max;
int len = strlen(input);
for (int i = 0; i len; i++)
{
if (input[i] = '0' input[i] = '9')
{
numCnt++;
}
if (input[i] min)
{
min = input[i];
}
if (input[i] max)
{
max = input[i];
}
}
printf("numCnt: %d\n", numCnt);
printf("min: %c\n", min);
printf("max: %c\n", max);
return 0;
}