C语言程序设计习题集(3)

合集下载

C语言程序设计习题集

C语言程序设计习题集

A. 从左起输出该字符串,右补空格
B. 按原字符长从左向右全部输出
C. 右对齐输出该字符,左补空格
D. 输出错误信息
25. 判断字符型变量 ch 为小写字母的表达式是()。
A.‘a’<=ch<=’z’
B. (ch>=a)&&(ch<=z)
C. (ch>=’a’)||(ch<=’z’)
D. (ch>=’a’)&&(ch<=’z’)
C. char a[10];a=”C program”;
D. char a[10]={“C program”};
29. 若用数组名作为函数调用的实参,传递给形参的是()。
A. 数组的首地址
B. 数组第 1 个元素的值
C. 数组中全部元素的值
D. 数组元素的个数
30. 若有如下定义,则对 a 数组元素地址的正确引用是()。
int a[5],p=a;
A. P+5
B. *a+1
C. &a+1
D.&a[0]
二、判断题
1. 在每个 C 程序中都必须并且只能有一个 main()函数。
()
2. 在 C 语言中,整型数据与实型数据在任何情况下都可以通用。
()
3. 在 C 语言程序中,happy 是正确的标识符。
()
4. 在 if 语句中,if 子句与 else 子句都可以单独使用,构成了 if 语句的两种默认形式。 ()
14. 下以程序运行结果是()。
main()
{ int a=2,i;
for(i=0;i<3;i++)
printf(“%4d”,f(a));}

C语言程序设计例子(3):猴子吃桃问题

C语言程序设计例子(3):猴子吃桃问题

C语⾔程序设计例⼦(3):猴⼦吃桃问题题⽬:猴⼦吃桃问题:猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个 第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。

以后每天早上都吃了前⼀天剩下 的⼀半零⼀个。

到第10天早上想再吃时,见只剩下⼀个桃⼦了。

求第⼀天共摘了多少。

思路分析:采⽤逆向思维,从后往前推断,发现其中有相同的地⽅,即出现递推公式,可以采⽤递归⽅法。

令S10=1,容易看出S9=2(S10+1),简化⼀下S9=2S10+2S8=2S9+2…..Sn=2Sn+1+2下⾯我将解决这个问题。

(第⼀种为普通循环⽅式,第⼆种为递归⽅式)⽅法⼀:while#include<stdio.h>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("the total is %d\n",x1);}⽅法⼆:递归#include<stdio.h>int sumPeach(int day);int main(){int sum;sum=sumPeach(1);printf("%d",sum);}int sumPeach(int day){if(day==10){return1;}elsereturn2*sumPeach(day+1)+2;}。

国开《C语言程序设计》(形考任务三)试题及答案

国开《C语言程序设计》(形考任务三)试题及答案

一、选择题(共30分,每小题2分)试题1在下面的函数声明语句中,存在着语法错误的是()。

选择一项:a. AA(int a, int b)b. AA(int, int)“c.AAfint a; int b)d.AA(int a, int)试题2在下面的保留字中,不能作为函数的返回值类型的是()。

选择一项:a. void° b.int'* c.enumd.long试题3假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为()<•选择一项:r a.lr b.2& c.4r d.8试题4假定a为一个数组名,在下面的表达式中,存在语法错误的是()o选择一项:'aa[i]b. *a+ +}return s;}计算出l+x+x2+...+x n的值并返回。

试题37int SG(int x) ( //x为大于等于2的整数int i=2;while(i*i<=x) (if(x%i ==O) break;i++;)if(i*i<=x) return 0; else return 1;}判断x是否为一个质数(素数),若是则返回1,否则返回0。

试题38int WB(int a[]z int n, int x) (for(int i=0;i<n;i + +)if(a[i] ==x) return 1;return 0;)从数组a[n]中顺序查找值为x的元素,若查找成功则返回1,否则返回0。

试题39int fun(int m, int n) (int c=0;static int b=2;if(m<b || n<b) return m*n;else if(m%b==0 && n%b==0) {c=b; return c*fun(m/b,n/b);}else (b++; return fun(m,n);})一个递归函数过程,求出两个自然数m和n的最小公倍数。

《C语言程序设计》(3学分)试卷A

《C语言程序设计》(3学分)试卷A

说明:请考生将答案写在“武汉大学答题纸”上并标明题号,否则不得分。

试卷中C语言程序的开发环境是VC6。

一、选择题(共20小题,每小题2分,共40分)1.以下正确的C语言自定义标识符是______。

A)_1aB)2a_C)doD)a.122.温度华氏和摄氏的关系是:C= 达式是____。

59(F-32)。

已知:floatC,F;由华氏求摄氏的正确计算的表A)C=5/9(F-32)B)C=5*(F-32)/9C)C=5/9*(F-32)D)三个表达式都正确3.设floatx,由键盘输入:12.45,能正确读入数据的输入语句是_________。

A)scanf("%5.2f",&x)B)scanf("%d",&x);C)scanf("%f",&x);D)scanf("%f",x);4.一个C程序的执行是从()A)main()函数开始,直到main()函数结束B)第一个函数开始,直到最后一个函数结束C)第一个语句开始,直到最后一个语句结束D)main()函数开始,直到最后一个函数结束5.判断char型变量c1是否为数字的正确表达式为________。

A)0<=c1<=9B)c1>=0&&c1<=9C),0?<=c1<=?9?D)c1>='0'&&c1<='9'6.switch(表达式)语句中的“表达式”,允许的类型是_________。

A)float,intB)float,int,charC)int,charD)char,double7.设inti,j,x=0;for(i=5;i;i--)for(j=0;j<4;j++)x++;则循环体结束后,x的值为________。

A)5B)20C)25D)死循环8.设x和y均为int型变量,则执行下面的循环后,y值为_________。

C语言程序设计_习题大全(含答案)

C语言程序设计_习题大全(含答案)

C语言程序设计_习题大全(含答案) C语言程序设计_习题大全(含答案)C语言程序设计是计算机科学与技术领域中非常重要的一门课程,对于学习和掌握程序设计的基本原理和方法具有重要意义。

在学习这门课程过程中,习题的练习和掌握是至关重要的一环。

本文将向大家介绍一份包含答案的C语言程序设计习题大全,帮助读者拓宽思路,加深对C语言程序设计的理解。

第一章:基础知识练习习题1:请编写一个C程序,输出"Hello, World!"。

答案:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```习题2:请编写一个C程序,将两个整数相加并输出结果。

答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("%d + %d = %d\n", num1, num2, sum);return 0;}```第二章:条件语句练习习题3:请编写一个C程序,判断某年份是否为闰年。

答案:```c#include <stdio.h>int main() {int year;printf("请输入年份:");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {printf("%d年是闰年\n", year);} else {printf("%d年不是闰年\n", year);}return 0;}```习题4:请编写一个C程序,判断用户输入的整数是否为正数、负数或者零。

C语言程序设计习题集3

C语言程序设计习题集3

目录第一章C语言基础知识 (1)第二章C语言程序设计的初步知识 (3)第三章顺序结构程序设计 (5)第四章选择结构程序设计 (9)第五章循环结构程序设计 (12)第六章数组 (16)第七章函数 (19)第八章指针 (23)第九章结构体与共用体 (27)第十章文件 (30)模拟试题一 (33)第一章答案 (39)第二章答案 (40)第三章答案 (40)第四章答案 (41)第五章答案 (42)第六章答案 (44)第七章答案 (45)第八章答案 (47)第九章答案 (48)第十章答案 (49)模拟试题一答案 (52)第一章C语言基础知识一、选择题1.C语言规定,必须用作为主函数名。

A)Function B)include C)main D)stdio 2.是C程序的基本构成单位。

A)函数B) 函数和过程C) 超文本过程D) 子程序3.下列说法正确的是。

A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可B)一个函数的函数体必须要有执行部分,可以没有变量定义C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数D)以上都不对4.下列说法正确的是。

A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的5.下列说法正确的是。

A)在执行C程序时不是从mian函数开始的B)C程序书写格式严格限制,一行内必须写一个语句C)C程序书写格式自由,一个语句可以分写在多行上D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号6.在C语言中,每个语句和数据定义是用结束。

A)句号B)逗号C)分号D)括号7.下列字符串是标识符的是。

A)_HJ B)9_student C)long D)LINE 18.以下说法正确的是。

A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分9.不是C语言提供的合法关键字。

国开作业《C语言程序设计-形考任务》 (3)

国开作业《C语言程序设计-形考任务》 (3)

题目:在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是()。

选项A:句点选项B:冒号选项C:分号选项D:逗号答案:分号题目:假定一个结构类型的定义为“struct A{int a,b; double c;};”,则该类型的长度为()。

选项A:8选项B:10选项C:12选项D:16答案:16题目:假定一个结构类型的定义为“struct D{int a; D* next;};”,则该类型的长度为()。

选项A:4选项B:8选项C:12选项D:16答案:8题目:假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。

选项A:x.a选项B:x-a选项C:x(a)选项D:x{a}答案:x-a题目:与结构成员访问表达式等价的表达式为()。

选项A:x-name选项B:x-name选项C:(x)-name选项D:(*x)-name答案:(x)-name题目:假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为()。

选项A:struct BOOK *x=malloc(book);选项B:struct BOOK x={"C++ Programming",27.0};选项C:struct BOOK *x=malloc(sizeof(struct BOOK));选项D:struct BOOK *x=book;答案:struct BOOK *x=malloc(book);题目:假定有“struct BOOK{char title[40]; float price;} b ook;”,则正确的语句为()。

选项A:struct BOOK x= book;选项B:struct BOOK *x=book;选项C:struct BOOK x=calloc(BOOK);选项D:struct BOOK *x=BOOK;答案:struct BOOK *x=book;题目:假定一个链表中结点的结构类型为“struct AA{int data, struct AA *next;};”,则next数据成员的类型为()。

C语言程序设计模拟试题3(附答案)

C语言程序设计模拟试题3(附答案)

《C语言程序设计》模拟试卷三一、填空题。

(每空2分,共16分)1.在内存中,短整型变量占字节,单精度实型变量占字节,字符型变量占字节。

2.一个C语言文件就是由若干个组成。

3.设有以下变量定义,并已赋确定得值char w; int x; float y; double z;则表达式:w*x+z-y所求得得数据类型为。

4.若x为int类型,请以最简单得形式写出与逻辑表达式!x等价得C语言关系表达式。

5.若有如下图所示五个连续得int类型得存储单元并赋值如下图,a[0]得地址小于a[4]得地址。

p与s就是基类型为int得指针变量。

请对以下问题进行填空。

a[0] a[1] a[2] a[3] a[4]p,给s赋值,使s指向最后一个存储单元a[4]得语句就是。

(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p得值就是。

二、单项选择题。

(每题2分,共40分)1.设有 int x=11; 则表达式 (x++ * 1/3) 得值就是()。

A) 3 B) 4 C) 11 D) 122.下列程序得输出结果就是()。

A) 3 B) 3、2 C) 0 D) 3、07main(){double d=3、2; int x,y;x=1、2; y=(x+3、8)/5、0;printf(“%d \n”, d*y);}3.下列程序执行后得输出结果就是(小数点后只写一位)()。

A) 6 6 6、0 6、0 B) 6 6 6、7 6、7C) 6 6 6、0 6、7 D) 6 6 6、7 6、0main(){ double d; float f; long l; int i;i=f=l=d=20/3;printf("%d %ld %f %f \n", i,l,f,d);scanf("%d",&d);}4.下列变量定义中合法得就是()。

A) short _a=1-、le-1; B) double b=1+5e2、5;C) long do=0xfdaL; D) float 2_and=1-e-3;5.设 int x=1, y=1; 表达式(!x||y--)得值就是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指针一单项选择题(每题2分,共40分)1 以下叙述中错误的是_B__。

A 在程序中凡是以“#”开始的语句行都是预处理命令行B 预处理命令行的最后不能以分号表示结束C #define MAX是合法的宏定义命令行D C程序对预处理命令行的处理是在程序执行的过程中进行的2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。

A 宏定义行中定义了标识符N的值为整数100B 在编译程序对C源程序进行预处理时用100替换标识符NC 对C源程序进行编译时用100替换标识符ND 在运行时用100替换标识符3 若有如下宏定义:#define N 2#define y(n) ((N+1)*n)则执行下列语句:z=4*(N+y(5));后的结果是_B__。

A 语句有错误B z值为68C z值为60D z值为1804 以下程序运行后的输出结果是_A__。

#define F(X,Y) (X)*(Y)main(){ int a=3,b=4;printf("%d\n",F(a++,b++));}A 12B 15C 16D 205 以下程序运行后的输出结果是_C__。

#define f(x) (x*x)main(){ int i1,i2;i1=f(8)/f(4); i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}A 64,28B 4,4C 4,3D 64,646 若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。

A int p=&a;B int *p=a;C int *p=*a;D int *p=&a;7 已知下列说明语句:static int a[]={2,4,6,8}static int *p[]={a,a+1,a+2,a+3};int **q;q=p;则表达式**(q+2)的值是_A__。

A 6B 2C 4D 88 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。

A *pxB aC pxD &a9 若指针px为空指针,则_B__。

A px指向不定B px的值为零C px的目标为零D px的地址为零10 对下语句int *px[10];,下面正确的说法是_B__。

A px是一个指针,指向一个数组,数组的元素是整数型。

B px是一个数组,其数组的每一个元素是指向整数的指针。

C A和B均错,但它是C语言的正确语句。

D C语言不允许这样的语句。

11 具有相同基类型的指针变量p和数组y,下列写法中不合法的是_D__。

A p=yB *p=y[i]C p=&y[i]D p=&y12 已知static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p; ,则表达式*(p[0]+1)+**(q+2) 的值是_A__。

A 5B 4C 6D 713 说明语句int *(*p)();的含义为_D__。

A p是一个指向int型数组的指针B p是指针变量,它构成了指针数组C p是一个指向函数的指针,该函数的返回值是一个整型D p是一个指向函数的指针,该函数的返回值是一个指向整型的指针14 设有如下程序段char s[20]="Beijing",*p; p=s;则执行p=s;语句后,以下叙述正确的是_A__。

A 可以用*p表示s[0]B s数组中元素个数和p所指字符串长度相等C s和p都是指针变量D 数组s中的内容和指针变量p中的内容相同15 设int型变量i、n均已定义,指针变量s1、s2各指向一个字符串。

在for(i=0;i<n;i++)循环中,下列语句用以实现将s2所指字符串中前n个字符复制到s1所指字符串中,其中代码正确的是_A__。

A *s1++=*s2++;B s1[n-1]=s2[n-1];C *(s1+n-1)=*(s2+n-1);D *(++s1)=*(++s2);16 给出下列程序的运行结果_B__。

#include <>void main(){ static char a[]="language",b[]="program";char *ptr1=a,*ptr2=b;int k;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k)) printf("%c",*(ptr1+k));}A gaeB gaC languageD 有语法错误17 以下程序执行后的输出结果是_A__。

void fun1(char *p){ char *q;q=p;while(*q!='\0'){ (*q)++; q++; }}main(){ char a[]={"Program"},*p;p=&a[3]; fun1(p); printf("%s\n",a);}A ProhsbnB PrphsbnC ProgsbnD Program18 以下程序执行后的输出结果是_C__。

void swap(char *x,char *y){ char t;t=*x; *x=*y; *y=t;}main(){ char *s1="abc",*s2="123";swap(s1,s2); printf("%s,%s\n",s1,s2);}A 123,abcB abc,123C 1bc,a23D 321,cba19 以下程序执行后的输出结果是__C_。

main(){ char *p[]={"3697","2584"};int i,j; long num=0;for(i=0;i<2;i++){ j=0;while(p[i][j]!='\0'){ if((p[i][j]-'0')%2) num=10*num+p[i][j]-'0';j+=2;}}printf("%d\n",num);}A 35B 37C 39D 397520 下列程序运行后的输出结果是_A__。

void main(){ char str[]="The_Microsoft"; int n=4;sub(str,0,n-1);sub(str,0,strlen(str)-1);printf("%s\n",str);}sub(str,n1,n2)char *str;int n1,n2;{ char c,*p;p=str+n2;str=str+n1;while(str<p){ c=*str; *str=*p; *p=c;str++; p--;}}A tfosorciMThe_ B. ehT_Microsoft C tfosorciM_ehT D. Microsoft_The 二填空题(每空3分,共30分)1 以下程序的定义语句中,x[1]的初值是2 ,程序运行后输出的内容是2468 。

main(){ int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;for(i=0; i<4; i++){ p[i]=&x[2*i+1]; printf("%d", p[i][0]); }printf("\n");}2 以下程序的输出结果是 2 5 。

void swap(int *a, int *b){ int *t;t=a; a=b; b=t;}main(){ int i=2,j=5,*p=&i,*q=&j;swap(p,q); printf("%d %d\n",*p,*q)}3 以下程序的输出结果是4 。

main(){ int a[5]={2,4,6,8,10}, *p;p=a; p++;printf("%d", *p);}4 以下程序的输出结果是__55__。

#define M 5#define N M+Mmain(){ int k;k=N*N*5; printf("%d\n",k);}5 若有定义语句:int a[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是 2 。

6 若有定义:int a[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是12 ,*(a[1]+2)的值是12 。

7 若有程序段:int *p[3],a[6],i;for(i=0;i<3;i++) p[i]=&a[2*i] ;则*p[0]引用的是a数组元素a[0] ,*(p[1]+1)引用的是a数组元素a[3] 。

三程序填空题(每空3分,共30分)1 下面函数的功能是从输入的十个字符串中找出最长的那个串,请填空使程序完整。

void fun(char str[10][81],char **sp){ int i;*sp = 【1】str[0] ;for(i=1;i<10; i++)if(strlen(*sp)<strlen(str[i])) 【2】*sp=str[i] ;}2 下面函数的功能是将一个整数字符串转换为一个整数,例如:"1234"转换为1234,请填空使程序完整。

int chnum(char *p){ int num=0,k,len,j;len=strlen(p);for( ; 【3】*p ; p++){ k= 【4】*p-'0' ; j=(--len);while( 【5】j-- ) k=k*10;num=num+k;}return (num);}3 下面函数的功能使统计子串substr在母串str中出现的次数,请填空使程序完整。

int count(char *str, char *substr){ int i,j,k,num=0;for(i=0; 【6】str[i] ;i++)for( 【7】j=i ,k=0;substr[k]==str[j];k++,j++)if(substr [ 【8】k+1 ]==’\0’){ num++ ; break ; }return (num);}4 下面函数的功能是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如483存放成“384”,请填空使程序完整。

相关文档
最新文档