C语言期末复习题(非常基础)

C语言期末复习题

  1. C语言最简单的数据类型包括:整形,实型,字符型
  2. C语言中,运算对象必须是整数型的运算符是:取模%
  3. 关系式x<y<z,用C语言表示为(x<y)&&(y<z)
  4. C语言程序的基本单位是:函数
  5. C语言的程序一行写不下时,可以:在任意空格初换行
  6. 标识符由字母,数字和下划线组成且第一个字符必须为字母或下划线
  7. C语言中,字符型数据在内存中一ASCⅡ码形式存放
  8. 一个程序由若干个文件组成,共用同一变量,则此变量的储存类别应该为:extern

补充:auto 自动变量 register 寄存器变量 extern 外部变量 static静态变量

  1. 调用一个函数时,实参变量和形参变量之间的数据传递是==值传递==
  2. C语言中逻辑表达式的值为 0或1
  3. 若定于语句int b[]={1,2,3,4,5}, *P = b;则表达式*P++的值是:1
  4. C语言不可以用关系运算符对字符组中的字符进行比较
  5. 进制考查image-20221204173458829

输出 8 10 16

  1. 单语句printf("%d",NULL);输出的结果是:0
  2. 若要求在if条件内表示a不等于0的关系,则能正确表达这一关系的表达式为:

​ a>0 ; a<0 ; !a ; a

  1. 若m,y,z均为int 型变量,则执行下面语句后m的值是

image-20221204174158713

  1. 若a,b均为真,则a||b为真

  2. 逻辑运算符!比逻辑运算符||优先级高

  3. int k=-1;
    printf("%d,%u",k,k);
    

    输出的结果为 :-1,65535

    补充输出格式用法:

    %d int 有符号10进制整数
    %u unsigned int 无符号10进制整数
    %hd short 有符号10进制短整形
    %hu unsigned short 无符号10进制短整形
    %ld long
    %lu unsigned long
    %lld long long
    %llu unsigned long long

    %o 有符号8进制整数
    %x    无符号的16进制数字,并以小写abcdef表示
    %X   无符号的16进制数字,并以大写ABCDEF表示
    %f   输入输出为浮点型 (%lf双精度浮点型)
    %c 输入输出为单个字符
    %s 输入输出为字符串

  4. 能正确表达:当x的取值范围在[1,10][100,110]内为真,否则为假的表达式是:(x>=1)&&I(x<=10)||(x>=100)&&(x<=110)

  5. 分享一个好习惯for循环条件中要循环几次直接int i=0;i<n;i++

  6. 一个变量的指针就是:变量的地址

  7. 宏替换时,如果实参为表达式,应先求表达式的值,再替换

  8. %m.nd中m表示最大场宽,n表示小数位数,整数位则为m-n-1位,够m位右对齐。%-m.nf可以控制输出左对齐

  9. 用高级语言编写的程序称之为:源程序

  10. 运行结果为:

image-20221204180342285

image-20221204180420614

  1. 计算表达式:b=25/3%3b的值为:2

程序编写

  1. 求出1000以为能被7或11整除,但不能被7或11同时整除的数,并存到数组a中
int main ()
{
    int i,j=0;
    int a[100];
    for(i=1;i<1000;i++)
    {
        if((i%7==0)||(i%11==0)&&(!(i%7==0)&&(i%11==0)))
        {
            a[j++]==i;
        }
    }
}
  1. 用程序实现用于统计一行字符串的单词个数,单词之间用空格分隔
#include <stdio.h>
int main()
{
    printf("输入一行字符:\n");
    char ch;
    int i,count=0,word=0;
    while((ch=getchar())!='\n')
        if(ch==' ')
            word=0;
        else if(word==0)
        {
            word=1;
            count++;
        }
    printf("总共有 %d 个单词\n",count);
    return 0;

}
  1. 用指针p输出p所指的数组元素后所有元素
#include <stdio.h>
  int main()
    {
        int a[10]={6,1,3,2,5,7,9,11,62};
        int i,j,*p;
        p=a+4;
        for(;*p!=0;)
        {
            printf("%d",*p++);
        }
    return 0;

}
  1. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include<stdio.h>
int main()
{
    float h,s;
    h=s=100;
    h=h/2; //第一次反弹高度
    for(int i=2;i<=10;i++)
    {
        s=s+2*h;
        h=h/2;
    }
    printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h);
    return 0;
}
  1. 打印菱形

先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

#include <stdio.h>
int 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");
    }

}

6.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

#include <stdio.h>

int main()
{
    int i,t;
    float sum=0;
    float a=2,b=1;
    for(i=1;i<=20;i++)
    {
        sum=sum+a/b;
        t=a;
        a=a+b;
        b=t;
    }
    printf("%9.6f\n",sum);  
}
  1. 求1+2!+3!+…+20!的和。
#include <stdio.h>

int main()
{
    int i;
    long double sum,mix;
    sum=0,mix=1;
    for(i=1;i<=20;i++)
    {
        mix=mix*i;
        sum=sum+mix;
    }  
    printf("%Lf\n",sum);  
}
  1. 1000以内的水仙花数
#include <stdio.h>

int main(){
	int a, b, c, i;
	printf("水仙花输出");
		for( i=100;i<1000;i++){
			 a=i/100;
			 b=(i-a*100)/10;
			 c=i%10;
			if(i == a*a*a+b*b*b+c*c*c){
				printf("\n \t%d ",i);
			}
		}
printf("\t");
return 0;
} 

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tian Meng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值