C语言复习:30道练习题

问题描述】依次输入一个整型数组的元素值,然后将该数组前n个元素中的值按逆序重新存放。例如,输入值的顺序为8,6,5,4,1,2,逆序存放后的顺序为2,1,4,5,6,8的顺序存放(注意是逆序存放而不是逆序输出)。
提示:
(1)定义一个数组,数组大小不超过999,为该数组前n个元素赋值。
(2)在循环中,使第0个元素与第n-1个元素交换,第1个元素与第n-2个元素交换,第2个元素与第个n-3元素交换(注意循环次数按n/2确定,n为数据个数)。
(3)输出逆序存放后的各数组元素(使用循环语句)。

【输入形式】第一行输入数组的元素个数,第二行输入依次输入元素值,用空格分开
【输出形式】逆序存放后的输入元素,用空格分开
【样例输入】

5

12#23#8#76#10

(#表示空格)

【样例输出】10#76#8#23#12
【样例说明】输入中的第一行的5表示对数组的前5个元素进行逆序存放,第二行依次为前5个元素的值;输出结果为逆序存放后数组的前n个元素值。

#include  <stdio.h> 
#include  <string.h> 
void swap(int b[],int len)
{
    int temp;
    int i=0;
    for ( i = 0; i < len/2; i++)
    {
        temp=b[i];
        b[i]=b[len-1-i];
        b[len-1-i]=temp;
    }
    i=0;
    for ( i = 0; i < len; i++)
    {
        printf("%d",b[i]);
        printf(" ");
    }

}
int main()
{
    int a[999];
    int n;
    int i=0;
    scanf("%d",&n);
    for( i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    swap(a,n);
    
    return 0;
}

【问题描述】

若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断
【输入形式】

用户在第一行输入一个整数。
【输出形式】

程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】

#include  <stdio.h> 
#include  <string.h> 
int isP(int b)
{
    int c;
    
    for(c=2;c<b/2+1;c++)
    {
        if(b%c==0)
        {
           return 0;
        }

    }
    
    return 1; 
   

}
void sawp(int c)
{
    int i,nc=0;
   
    while(c!=0)
    {
        i=c%10;
        c=c/10;
        nc=nc*10+i;
        
    }
    
    if(isP(nc))
       { printf("yes");}
    else
        {printf("no");}
    
}
int main(){
    int a;
    scanf("%d",&a);
    if(!isP(a))
    {
        printf("no");
    }
       
    else{sawp(a);}
         
    
    
    return 0;
}

【问题描述】字符串逆序:设计函数功能是将一个字符串逆序,函数声明:void stringNx(char *a) 使用这个函数完成将输入的字符串逆序输出

【输入形式】要求输入一个字符串

【输出形式】逆序后输出

【样例输入】abcd 

【样例输出】dcba

#include  <stdio.h> 
#include  <string.h> 
void stringNx(char *a) 
{
    int len=strlen(a);
    int i;
    for ( i = len-1; i >=0; i--)
    {
        
        printf("%c",a[i]);
    }
    
}
int main()
{
    char a[100];
    scanf("%s",a);//字符串不用取地址哦
  
    stringNx(a);
    return 0;
}

【问题描述】

两个集合的差集定义如下:
集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
【输入形式】
从标准输入接收集合中的自然数元素,以空格分隔。-1表示输入结束。
其中,每个集合都不输入重复的元素。
【输出形式】
输出差运算后集合中的元素,以空格分隔。输出元素的顺序与原有集合A输入的顺序一致。
如果A、B的差集为空集,则不输出任何数值。

#include  <stdio.h> 
#include  <string.h> 
void less(int r[],int d[],int lr,int ld)
{
    
    int i,j;
    int Less;
    for ( i = 0; i < lr; i++)
    {
        for (j = 0; j < ld; j++)
        {
           if(d[j]==r[i])
           {
                r[i]=-1;
           }
        }
        
    }

    for(i=0;i<lr;i++)
    {
        if (r[i]!=-1)
        {
            printf("%d",r[i]);
            printf(" ");
        }
        
    }
    
}
int main()
{
    int lr=0, ld=0;
    int c=0,i=0;
    int a[10],b[10];
   while(scanf("%d",&c)!=EOF)
   {
        if (c==-1)
        {
            break;
        }
        a[i++]=c;
        lr++;
   }
   i=0;
    while(scanf("%d",&c)!=EOF)
   {
        if (c==-1)
        {
            break;
        }
        b[i++]=c;ld++;
   }
less(a,b,lr,ld);
return 0;
}

【问题描述】Fibonacci数列:无穷数列1,1,2,3,5,8,13,21,34,55,…, 被称为Fibonacci数列。求第n个Fibonacci数。

【输入形式】输入数字n

【输出形式】输出第n个Fibonacci数

#include  <stdio.h> 
#include  <string.h> 
void Fibonacci(int b) 
{
    int i;
    int s[b];
    s[1]=1;s[0]=1;
     for( i = 2; i < b; i++)
    {
        s[i]=s[i-1]+s[i-2];

    }
    printf("%d",s[b-1]);

}
int main()
{
    int a;
    scanf("%d",&a);
    Fibonacci(a);
    return 0;
}

【问题描述】输入一个字符串,将这个字符串中的大写英文字母

一、单项选择题 1、 C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。  A).c B).obj C).exe D).bas 2、 )完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B ) A)连接、编译 B)编译、连接 C)连接、运行 D)运行 3、 关于C语言的叙述中,不正确的是( D ) A)C程序可由一个或多个函数组成 B)C程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)注释说明只能位于一条语句的后面 4、 一个C程序的执行是从( C )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 5、 以下正确的叙述是( C ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 6、 下列选项中,不能用作标识符的是( D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 7、 常数的书写格式决定了常数的类型和值,0x1011是( C ) A)8进制整型常量 B)字符常量 C)16进制整型常数 D)2进制整型常数 8、 以下4组用户定义标识符中,全部合法的一组是( D ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 9、 ( B )是合法的用户自定义标识符。 A) b-b B)float C)123a D) _isw 10、 以下选项中不正确的整型常量是( )。  A) 12L B) -10 C) 1,900 D) 123U 11、 表达式( C )的值是0。 A)3%5 B)3/5)0 C)3/5 D)3<5 12、 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x0||y>0) 等价于( )。 A)!x>0||!y>0 B)!(x>0)||!(y>0) C)!x>0&&!y>0 D)!(x>0)&&!(y>0) 14、 若变量已正确定义并赋值,表达式( )不符合C语言语法。 A)4&&3 B)+a C)a=b=5 D)int(3)14) 15、 C语句”x*=y+2;”还可以写作( ) A) x=x*y+2; B) x=2+y*x; C) x=x*(y+2); D) x=y+2*x; 16、 下列格式符中,可以用于以8进制形式输出整数的是( ) A) %d B) %o C) %ld D) %x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值