SJTU 《程序设计基础C》自测题

image

自测题一

判断对错

1、C语言中基本数据类型包括整型、实型、字符型。true

2、C语言程序总是从main函数第一条可执行语句开始执行,在main函数结束。false

3、凡是函数中未指定存储类别的局部变量其隐含的存储类别是自动(auto)变量。true


自测题二

选择题

1.C 语言属于(C)语言。

A、低级 B、汇编 C、高级 D、面向对象

2.一个 C 语言程序总是从(A)开始执行。

A、书写顺序的第一个函数 main( ) B、书写顺序的第一条执行语句C、主函数 D、不确定

3. C 语言中的标识符只能由字母、数字和下划线组成,且第一个字符(C)

A、必须为字母 C、必须为字母或下划线 B、必须为下划线 D、可以是字母、数字或下划线中的任一种

4. 在 C 语言中,不正确的 int 类型的常数是(A)

A.32768 B.0 C.037 D.0Xaf

5.以下选项中,不能作为合法常量的是(B)

A.1.2e04 B.1.2e0.4 C.1.2e+4 D.1.2e0

6.C语言中的数据的基本类型包括 (C)

A.整型、实型、字符型的逻辑型 B. 整型、实型、字符型和结构体 C. 整型、实型、字符型和枚举型D.整型、实型、字符型和指针型


自测题三

1.

#include<stdio.h>
#include<string.h>
main()
{
   printf("%d\n", strlen("IBM\n012\t\"\\\0"));
}

则程序运行后的输出结果是 。
A) 10 B) 11 C) 16 D) 12

2.有如下程序片段:

int i = 0;
while(i++ <= 2);
printf("%d", i);
则正确的执行结果是:
A) 2 B) 3 C) 4 D) 程序陷入死循环

3、写出运行结果

#include<stdio.h>
int main()
{
    int i=16,j,x=6;
    j=i+++1;
    x*=i=j;
    printf("%d,%d\n",j,x);
    return 0;
}
/*
输出结果
17,102
*/

自测题四

1、 写出运行结果

#include<stdio.h>
int main()
{
    int a,b,c,d;
    a=c=0;
    b=1;
    d=20;
    if(a){
       d=d-10;
    } 
    else if(!b)
    {
       if(!c)
       {
        d=25;
       }
       else
       {
        d=15;   
       }    
    }
      
    printf("d=%d\n",d);
    return 0;
}
/*
输出结果
d=20
*/

2、 写出运行结果

#include<stdio.h>
int main()
{
int i=10;
switch(i){
          case 9: i+=1;
          case 10: i+=1;
          case 11: i+=1;
          default : i+=1;
      }
printf("%d",i);
}
/*
输出结果
13
*/

3、 编程题

计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于0.0001为止。

#include <stdio.h>
int main(void)
{
    float fm = 1,sum = 0;
    for(;fm < 10000;fm++)
    {
        if((int)fm%2)
            sum += 1/fm;
        else 
            sum -= 1/fm;
    }
    printf("The result is : %f\n",sum);       
    return 0;
}
/*
输出结果
The result is : 0.693192
*/

自测题五

1、 程序填空

将100至200间不能被3整除的数输出:

#include<stdio.h>
int main()
{
    int n;
    for(n=100;n<=200;n++)
    {
       if(n%3==0)
       {
        printf("%d\n",n);   
       }
    }
}
/*
输出结果
102
105
108
111
114
117
120
123
126
129
132
135
138
141
144
147
150
153
156
159
162
165
168
171
174
177
180
183
186
189
192
195
198
*/

2、 程序填空

判断m是否是素数

#include <stdio.h>
#include <math.h>
int main(){
    int m;  // 输入的整数 
    int i;  // 循环次数
    int k;  // m 的平方根 

    printf("输入一个整数:");
    scanf("%d",&m);

    // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
        if(m%i==0)
            break;

    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k)
        printf("%d是素数。\n",m);
    else
        printf("%d不是素数。\n",m);

    return 0;
}
/*
输入一个整数:4
输出结果
4不是素数。
*/

自测题六

1、 编程题

任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。

#include <stdio.h>
int main()
{
    int a[10];
    int i,j;
    int temp;
    printf("请输入10个整数:");
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<9;i++)
    {
        for(j=0;j<9-i;j++)
        {
            if(a[j]>a[j+1])
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    printf("排列后顺序为:");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
/*
请输入10个整数:1 2 3 4 5 6 7 8 9 0
排列后顺序为:0 1 2 3 4 5 6 7 8 9
*/

2、输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。

#include <stdio.h>
#include <string.h>
int main()
{
     char c[50];
     int i,el=0,sp=0,nu=0,other=0; 
     gets(c);//输入字符串 
      
     for(i=0; i<strlen(c); i++)//strlen返回字符串长度 
     {
             if((c[i]>='A' && c[i]<='Z')||(c[i]>='a' && c[i]<='z'))
                  el++;
             else if(c[i]>='0'&&c[i]<='9')
                 nu++;
             else if(c[i]==' ')
                 sp++;
             else 
                  other++;
     }
     printf("英文字母个数=%d\n数 字 个 数 =%d\n空 格 字 数 =%d\n其他字符个数=%d\n",el,nu,sp,other);
     return 0;
}
/*
5124u0sahfsfjlss  dfsffsf
输出结果
英文字母个数=18
数 字 个 数 =5
空 格 字 数 =2
其他字符个数=0
*/

3、 编程打印如下形式的杨辉三角形,打印的杨辉三角形的行数n(不超过10行)要求由用户从键盘输入。要求按照如下函数原型进行编程,不能使用全局变量

#include <stdio.h> 
int i,j,a[16][16]={0};/*定义全局变量*/
int main() 
{
    void YHTriangle(int n);/*声明函数*/ 
    void PrintYHTriangle(int n);/*声明函数*/ 
    int n=0;   
    while(n<1 || n>10)   /*不超过10行*/ 
    { 
        printf("请输入杨辉三角形的行数:");     
        scanf("%d",&n);   
    }
    YHTriangle(n);/*引用函数*/ 
    PrintYHTriangle(n);/*引用函数*/
    return 0;
}
void YHTriangle(int n)/*定义杨辉三角函数*/
{
   
  for(i=0;i<n;i++)     
   a[i][0]=1;                            
   for(i=1;i<n;i++)     
   for(j=1;j<=i;j++)       
    a[i][j]=a[i-1][j-1]+a[i-1][j];    
}
void PrintYHTriangle(int n)/*定义杨辉三角的输出函数*/
{
    YHTriangle(n);
    for(i=0;i<n;i++)                    
    { 
        for(j=0;j<=i;j++)       
        printf("%5d",a[i][j]);     
        printf("\n");   
    } 
}
/*
请输入杨辉三角形的行数:10
输出结果
    1
    1    1
    1    2    1
    1    3    3    1
    1    4    6    4    1
    1    5   10   10    5    1
    1    6   15   20   15    6    1
    1    7   21   35   35   21    7    1
    1    8   28   56   70   56   28    8    1
    1    9   36   84  126  126   84   36    9    1
*/

自测题七

1、 编程输入10个数,找出其中的最大值及其所在的数组下标位置。

#include <stdio.h>
int main()
{
    int a[10];
    int i,max;
    for(i = 0; i < 10; i ++)
        scanf("%d",a+i);
    for(max = 0, i=1; i<10; i++)
        if(a[max]<a[i])max = i;
    printf("%d,%d\n",a[max],max);
}
/*
1 2 3 4 5 6 7 8 9 0
输出结果
9,8
*/

2、韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。你知道韩信至少有多少兵吗?

#include <stdio.h>
int main()
{
    int x;

    for (x=1; x++;)
    {
        if(x%5==1 && x%6==5 && x%7==4 && x%11==10)
        {
            printf("x=%d\n",x);
            break;
        }
    }
}
/*
输出结果
2111
*/

3、找出下面程序的错误

下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之间以空格分开。已知:判断是否有新单词出现的方法——当前被检验字符不是空格,而前一被检验字符是空格,则表示有新单词出现。

#include<stdio.h>

int main(){

    int i,num,n=20;

    char str[n];    //改为char str[20]; 

    scanf("%s",str);    //改为gets(str);

    if(str[0] != ' '){

        num = 1;

    }else{

        num = 0;

    }

    for(i=1;i<20;i++){  //改为for(i=1;str[i]!='\o';i++){

        if(str[i]!= ' ' || str[i-1]== ' '){ //改为if(str[i]!= ' ' && str[i-1]== ' '){

            num++;

        }

    }

    printf("num=%d\n",num);

    return 0;

}
/*
Nice to meet you
输出结果
num=4
*/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335