备考2021辽宁专升本时做的C语言程序设计题

文章更新已截止

1、用户输入字符c的值,按下表对应关系输出a的值。

输入的c值 输出的a值
$ 8.26
7 13.48
% 1.10
# 0.075
其他字符 0
/*switch-case写法*/
#include 
int main(int argc, char *argv[])
{
    char c;
    float a;
    scanf("%c",&c);
    switch(c){
        case '$':a=8.26;break;
        case '&':a=13.48;break;
        case '%':a=1.10;break;
        case '#':a=0.075;break;
        default:a=0;break;
    }
    printf("a=%f\n",a);
    return 0;
}

/*if-else写法*/
#include 
int main(int argc, char *argv[])
{
    char c;
    float a;
    scanf("%c",&c);
    if(c=='$')
        a=8.26;
    else if(c=='&')
        a=13.48;
    else if(c=='%')
        a=1.10;
    else if(c=='#')
        a=0.075;
    else
        a=0;
    printf("a=%f\n",a);
    return 0;
}

2、输出100-1000之间能同时被7和9整除的数,1行输出5个数。

#include 
int main(int argc, char *argv[])
{
    int i,num=0;
    for(i=100;i<=1000;i++){
        if(i%7==0&i%9==0){
            printf("%d ",i);
            num++;
            if(num%5==0)
                printf("\n");
        }
    }
    return 0;
}

3、根据下表的对应关系,使用if语句或switch语句完成显示汇率程序设计。

输入字符 输出数据
u 826.72
e 1182.30
j 15.13
h 109.65
其他字符 0
/*if-else写法*/
#include 
int main(int argc, char const *argv[])
{
    char c;float d;
    scanf("%c",&c);
    if (c=='u')
    {
        a = 826.72;
    }else if (c=='e')
    {
        a = 1182.30;
    }else if (c=='j')
    {
        a = 15.13;
    }else if (c=='h')
    {
        a = 109.65;
    }else
        a = 0;
    printf("a=%f\n",a);
    return 0;
}
/*switch-case写法*/
#include 
int main(int argc, char const *argv[])
{
    char c;float d;
    scanf("%c",&c);
    switch(c){
        case 'u': a=826.72;break;
        case 'e': a=1182.30;break;
        case 'j': a=15.13;break;
        case 'h': a=109.65;break;
        default:a=0;break;
    }
    printf("a=%f\n",a);
    return 0;
}

4、利用循环语句计算下列公式的值,并输出sum的值。

sum=11+13+15+……+197+199

#include 
int main(int argc, char const *argv[]){
    int i,sum=0;
    for (int i = 11; i <=199; i+=2){
        sum+=i;
    }
    printf("sum=%d\n", sum);
    return 0;
}

5、请编写函数fun,其功能是:计算并输出下列多项式的值:

    S = 1 + 1/1! + 1/2! + 1/3! +1/4! + …… + 1/n!
#include 
double fun(float x){
    if (x==1)
        return 1;
    else
        return x*fun(x-1);
}
int main(int argc, char const *argv[]){
    float S=1.0;
    int i,num;
    scanf("%d",&num);
    for (int i = 1; i <= num; i++){
        S+=1/fun(i);
    }
    printf("S=%d\n", S);
    return 0;
}

6、程序设计:输出100以内所有素数。

#include 
int main(){
    int i,n;
    for(i=2;i<=100;i++){   //1肯定不是素数,所以从2开始遍历
        for(n=2; n=i)
            printf("%d is prime number\n", i);
    }
    return 0;
}

7、程序设计:用户输入整数x,y值,按以下公式计算z值并输出。

#include 
int main(){
    int x,y,z=0;
    scanf("%d%d",&x,&y);
    if(x>0&&y>0)
        z=3*x*x-y*y;
    else if(x<0&&y<0)
        z=4*x*x*x+y*y*y;
    else
        z=0;
    printf("z=%d",z);
    return 0;
}

8、程序设计:输入一个年份year,判断是否为闰年。

#include 
int main( )
{
    int year;
    scanf("%d",&year);
    if(year%4==0&&year%100!=0||year%400==0)
        printf("%d is RunNian",year);
    else
        printf("%d is not RunNian",year);
    return 0;
}

9、根据下表的对应关系,使用if语句或switch语句完成等级评定程序设计。

输入数据 输出等级
300 A
200-299 B
100-199 C
0-99 D
/*if-else写法*/
#include 
int main(){
    int num;
    char Grade;
    scanf("%d",&num);
    if(num==300)
        Grade = 'A';
    else if(num>=200&&num<=299)
        Grade = 'B';
    else if(num>=100&&num<=199)
        Grade = 'C';
    else if(num>=0&&num<=99)
        Grade = 'D';
    else
        printf("输入的数据不合法!");
    if(Grade=='A'||Grade=='B'||Grade=='C'||Grade=='D')
        printf("Grade=%c\n",Grade);
    else
        printf("\n");
    return 0;
}

/*switch写法*/
#include 
int main(){
    int num;
    char Grade;
    scanf("%d",&num);
    switch(num/100){
        case 3:Grade='A';break;
        case 2:Grade='B';break;
        case 1:Grade='C';break;
        case 0:Grade='D';break;
        default: printf("输入的数据不合法!");
    }       
    if(Grade=='A'||Grade=='B'||Grade=='C'||Grade=='D')
        printf("Grade=%c\n",Grade);
    else
        printf("\n");
    return 0;
}

10、利用循环语句计算下列公式的值,并输出sum的值。

#include 
int main(){
    float sum=1.0,symbol=1.0;
    int i;
    for(i=0;i<=50;i++){
        sum+=symbol*(2*i)/(2*i+1);
        symbol=-symbol;
    }
    printf("%f",sum);
    return 0;
}

11、编写一个程序,将两个字符串连接起来,不要使用strcat函数。

写法1:
#include 
int main(){
    char s1[100],s2[50];
    int i=0,j=0;
    scanf("%s",s1);
    scanf("%s",s2);
    while(s1[i]!='\0')
        i++;
    while(s2[i]!='\0')
        s1[i++]=s2[j++];
    s1[i]!='\0';
    printf("%s\n",s1);
    return 0;
}
写法2:
#include 
int main(){
    char s1[100],s2[50];
    int i=0,j=0;
    gets(s1);
    gets(s2);
    while(s1[i]!='\0')
        i++;
    while(s2[i]!='\0')
        s1[i++]=s2[j++];
    s1[i]!='\0';
    puts(s1);
    return 0;
}

12、输入一个不超过4位的正整数,判断其为几位数并输出。

方法1:判断各个位上是否有非0数字
#include
int main(){
    int num_in,num_dight=0;//num_in为输入的数,num_dight为判断几位数的变量
    int num_gewei,num_shiwei,num_baiwei,num_qianwei;
    scanf("%d",&num_in);
    if(num_in>=0&&num_in<=9999){
        num_qianwei=num_in/1000%10;
        num_baiwei=num_in/100%10;
        num_shiwei=num_in/10%10;
        num_gewei=num_in/1%10;
        if(num_qianwei!=0)
            num_dight=4;
        else if(num_qianwei==0&&num_baiwei!=0)
            num_dight=3;
        else if(num_qianwei==0&&num_baiwei==0&&num_shiwei!=0)
            num_dight=2;
        else
            num_dight=1;
        printf("您输入的num_in=%d是%d位数\n",num_in,num_dight);
    }else
        printf("您输入的数据不合法!\n");
    return 0;
}
方法2:直接比较法
#include 
int main(){
    int num_in,num_dight=0;
    scanf("%d",&num_in);
    if(num_in>=1000&&num_in<=9999)
        num_dight=4;
    else if(num_in>=100&&num_in<=999)
        num_dight=3;
    else if(num_in>=10&&num_in<=99)
        num_dight=2;
    else if(num_in>=0&&num_in<=9)
        num_dight=1;
    else
        printf("您输入的数不合法!");
    if(num_dight==1||num_dight==2||num_dight==3||num_dight==4)
        printf("您输入的是%d位数\n",num_dight);
    else
        printf("\n");
    return 0;
}
方法3:do-while循环
#include 
int main(){
    int num_in,num_dight=0;
    scanf("%d",&num_in);
    do{
        num_dight+=1;
        num_in/=10;
    }while(num_in>0);
    printf("您输入的是%d位数\n",num_dight);
    return 0;
}

13、程序设计:输出九九乘法表。

#include 
int main(){
    int i,j;
    for(i=1;i<=9;i++)
        for(j=1;j<=9;j++){
            if(j

14、输入一行字符串,判断有几个单词

#include 
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;
}

15、任意输入三个整数,程序设计实现对这个三个整数从小到大排序输出。

#include 
int main()
{
    int num1,num2,num3,temp;
    scanf("%d,%d,%d",&num1,&num2,&num3);  /*输入任意的3个整数*/
    if(num1>num2){   /*如果num1大于num2,借助中间变量temp实现num1与num2值的互换*/
        temp=num1;
        num1=num2;
        num2=temp;
    }
    if(num1>num3){   /*如果num1大于num3,借助中间变量temp实现num1与num3值的互换*/
        temp=num1;
        num1=num3;
        num3=temp;
    }
    if(num2>num3){   /*如果num2大于num3,借助中间变量temp实现num2与num3值的互换*/
        temp=num2;
        num2=num3;
        num3=temp;
    }
    printf("The order of the nums is:%d,%d,%d",num1,num2,num3);  /*输出函数顺序输出num1、num2、num3的值*/
    return 0;
}

16、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,有多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。编写程序求猴子第一天摘了多少个桃子。

/*while循环*/
#include 
int main()
{
    int day,x1,x2;
    day=9;
    x2=1;
    while(day>0){
        x1=(x2+1)*2;
        x2=x1;
        day--;
    }
    printf("peach sum is%d\n",x1);
    return 0;
}

/*for循环*/
include 
int main()
{
    int day,x1,x2;
    x2=1;
    for(day=9;day>0;day--){
        x1=(x2+1)*2;
        x2=x1;
    }
    printf("peach sum is%d",x1);
    return 0;
}

17、求某一范围内完数的个数。 完数概念:如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1、2、3,而 6=1+2+3,因此6是“完数”。

#include 
int main()
{
    int i,j,sum,num;  /*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/
    printf("请输入所选范围上限:\n");
    scanf("%d",&num);  /* num的值由键盘输入*/
    for(i=2;i<=num;i++){
        sum=0;  /*保证每次循环时sum的初值为0*/
        for(j=1;j

18、输入两个数a,b。如果两个数同为奇数则输出它们的差,否则输出它们的和。

#include 
int main(int argc, char *argv[])
{
    int a,b;//输入的两个数 
    int sum=0;//两个数的和或差的初始值
    scanf("%d,%d",&a,&b);
    if(a%2!=0&&b%2!=0)
    //  printf("%d",sum=a-b);
        sum+=(a-b);
    else
        sum+=(a+b);
    printf("%d",sum); 
    return 0;
}

19、输入一个字符,如果是小写转换成大写,如果是大写直接输出

#include 
int main(int argc, char *argv[])
{
    char c,d;
    c=getchar();
    if(c>='A'&&c<='Z')
        printf("%c",c);
    else{
        c-=32;
        printf("%c",c);
    }
    return 0;
}

20、编程输出100以内所有被3整除,并能被5整除余3,被7整除余1的两位数

#include 
int main(int argc, char *argv[])
{
    int i;
    for(i=10;i<100;i++){
        if(i%3==0&&i%5==3&&i%7==1)
            printf("%d\n",i);
    }
    return 0;
}

21、编写程序,求出[1,1000]范围内能被3或13整除,但不能同时被3和13整除的总个数,返回这些数的个数。

#include 
int main(int argc, char *argv[])
{
    int i,sum=0;
    for(i=1;i<=1000;i++){
        if((i%3==0||i%13==0)&&!(i%3==0&&i%13==0)){
            printf("%d  ",i);//验证数字用
            sum+=1;
        }       
    }
    printf("%d\n",sum);
    return 0;
}

22、从键盘上输入20个正整数(或浮点数),输出偶数的个数及偶数和(或浮点数总和)

#include 
int main(int argc, char *argv[])
{
    int i,a,sum=0,num=0;//num为偶数个数,sum为偶数和 
    for(i=1;i<=20;i++){
        scanf("%d",&a);
        if(a%2==0){
            //printf("%d\n",a);
            num+=1;
            sum+=a;
        }       
    }
    printf("num=%d\n",num);
    printf("sum=%d\n",sum);
    return 0;
}

23、编程实现从键盘上反复输入10个整数,判断其是整数还是负数,如果是正数则累加求和。最后输出累加和值。

#include 
int main(int argc, char *argv[])
{
    int i,a,sum=0;
    for(i=1;i<=10;i++){
        scanf("%d",&a);
        if(a>0){
            sum+=a;
        }       
    }
    printf("sum=%d\n",sum);
    return 0;
}

24、编写一个函数,功能是计算2345的各位数字的平方和

#include 
int a,b,c,d,pingfang;
void fun(int x){
    a=x/1000%10;
    b=x/100%10;
    c=x/10%10;
    d=x/1%10;
    pingfang=a*a+b*b+c*c+d*d;
    printf("%d",pingfang);
}
int main(int argc, char *argv[])
{
    fun(2345);
    return 0;
}

25、统计100到10000之间有多少和这样的整数,其各位数字之和能被7整除。

int a,b,c,d,e,sum;
int fun(int x){
    a=x/10000%10;
    b=x/1000%10;
    c=x/100%10;
    d=x/10%10;
    e=x/1%10;
    sum=a+b+c+d+e;
}
int main(int argc, char *argv[])
{
    int i,sum_number=0;
    for(i=100;i<=10000;i++){
        if(fun(i)%7==0)
            sum_number+=1;
    }
    printf("%d\n",sum_number);
    return 0;
}

26、编程找出100到x(x<=999)之间各位上的数字之和为15的所有整数,并在屏幕输出。

#include 
int a,b,c,sum;
int fun(int x){
    a=x/100%10;
    b=x/10%10;
    c=x/1%10;
    sum=a+b+c;
}
int main(int argc, char *argv[])
{
    int i,sum_number=0;
    for(i=100;i<=999;i++){
        if(fun(i)==15){
            sum_number+=1;
            printf("%d\n",i);
        }           
    }
    printf("%d\n",sum_number);
    return 0;
}

27、请编写程序计算并输出下列多项式的和:键盘输入n值 (当前程序逻辑应该没有问题,就是在Cfree编辑器里不执行)

         1-1/2×2-2/3×3-3/4×4-……-(n-1)/n×n
#include 
int main(int argc, char *argv[])
{
    int n;
    float i,sum=1.0;
    printf("请输入正整数n:");
    scanf("%d\n",&n); 
    if(n<=0)
        printf("输入错误,请输入正整数!");
    else if(n==1)
        printf("sum=%f",sum);
    else{
        for(i=2;i<=n;i++)
            sum-=((i-1)/(i*i));
        printf("sum=%f",sum);
    } 
    return 0;
}

28、编程求序列2/1,3/2,5/3,8/5,13/8……前20项和。

#include 
int main(int argc, char *argv[])
{
    float a[20]={2.0,3.0};
    float b[20]={1.0,2.0};
    int i;
    float sum=0;
    for(i=0;i<20;i++){
        if(i>=2){
            a[i]=a[i-1]+a[i-2];
            b[i]=a[i-1];
        }
        sum+=a[i]/b[i];
    }
    printf("%f",sum);
    return 0;
}

29、下面程序的功能是计算1-1/2+1/3-1/4…+1/99-1/100+…的值,直到最后一项的绝对值小于10的-6次幂为止(1/1000000)。

#include 
int main(int argc, char *argv[])
{
    float num=0,sum=0;
    int i;
    for(i=1;i<=1000000;i++){
        if(i%2==0)
            num=-i;
        else
            num=i;
        sum+=1/num; 
    }
    printf("sum=%f",sum);
    return 0;
}

30、输入10个数存于数组,将其中最小数与第一个数交换,将最大数与最后一个数交换。

#include 
int main(int argc, char *argv[])
{
    int a[10],i,min,max;
    for(i=0;i<10;i++){
        scanf("%d",&a[i]);//将10个数存入数组 
    }
    for(i=0;i<9;i++){
        if(a[i]>a[i+1]){
            max=a[i];
            //min=a[i+1];
            a[i]=a[i+1];
            a[i+1]=max;
        }
    } 
    for(i=9;i>0;i--){
        if(a[i]>a[i+1]){
            //max=a[i];
            min=a[i+1];
            a[i]=min;
            a[i+1]=a[i];
        }
    } 
    for(i=0;i<10;i++){
        printf("%d  ",a[i]);//将10个数存入数组 
    }
    return 0;
}

31、以下程序的功能是:输入10个学生的成绩,统计学生的平均分,并将成绩小于平均分的成绩输出。

#include 
int main(int argc, char *argv[])
{
    int score[10],i;
    float average=0,sum=0;
    for(i=0;i<10;i++){
        scanf("%d",&score[i]);
        sum+=score[i];
    }
    average=sum/10;
    for(i=0;i<10;i++)
        if(score[i]

32、定义一个整型数组a[10],输入各个元素的值,输出元素值为奇数并且下标也为奇数的元素的和。

#include 
int main(int argc, char *argv[])
{
    int a[10],i,sum=0;
    for(i=0;i<10;i++){
        scanf("%d",&a[i]);
        if(i%2==1&&a[i]%2==1)
            sum+=a[i];
    }
    printf("sum=%d",sum);
    return 0;
}

33、编写函数将数组s1中字符串中的小写英文字母放入数组s2中

#include 
#include 
int main(int argc, char *argv[])
{
    char s1[100],s2[50];
    int i=0,j=0;
    gets(s1);
    gets(s2);
    while(s1[i]!='\0'){
        if(s1[i]>='a'&&s1[i]<='z'){
            s2[j]=s1[i];
            j++;
        }
        i++;
    }
    s2[j]='\0';
    puts(s2);
    return 0;
}

你可能感兴趣的:(备考2021辽宁专升本时做的C语言程序设计题)