编程题

来源:互联网 发布:xd网络上是什么意思啊 编辑:程序博客网 时间:2024/06/06 15:38

编程题

1、定义函数void revers(int a[],int n),实现将数组a中的前n个元素位置互换仅写出函数定义即可

 

void revers(int a[],int n)

{

int b;

int i,j;

for(i=0,j=n-1;i<j;i++,j--)

{

b=a[i];

a[i]=a[j];

a[j]=b;

}

}

 

2、定义函数void large(char s[],int n),实现将数组s中的前n个字符中的小写字母转换为大写字母其他字符保持不变

 

void large(char s[],int n)

{

int i;

for(i=0;i<n;i++)

{

if(s[i]>='a'&&s[i]<='z')

{

s[i]=s[i]-32;

}

}

}

 

3、定义函数void sum_ave(int a,int b,int *sum,float *ave),实现将计算a,b的和与平均分并通过参数sum,ave返回

 

Void sum_ave(int a,int b,int *sum,float *ave)

{

*sum=a+b;

*ave=(a+b)/2;

}

 

4、假设学生的进步信息包括学号、姓名、三门课程成绩以及个人平均成绩。输入n个学生的成绩信息,并计算输出平均分最高的学生信息。要求定义结构体实现。

 

#include<stdio.h>

#include<string.h>

int main()

{

    struct shenme

    {

        char num[20];

        char name[20];

        int x,y,z;

        double ave;

    }t[60];

    int n;

    scanf("%d",&n);

    int i,it=0;

    for(i=0;i<n;i++)

    {

        scanf("%s%s%d%d%d",t[i].num,t[i].name,&t[i].x,&t[i].y,&t[i].z);

        t[i].ave=(t[i].x+t[i].y+t[i].z)/3.0;

    }

    for(i=1;i<n;i++)

    {

        if(t[it].ave<t[i].ave)

        {

            it=i;

        }

    }

    printf("%s %s %d %d %d",t[it].num,t[it].name,t[it].x,t[it].y,t[it].z);

    return 0;

}

 

5、定义一个包含时、分、秒的时间结构体类型,编写程序实现给定两个时间,计算这两个时间的和。

 

#include <stdio.h>

struct time

{

int h;

int m;

int s;

};

int main()

{

struct time a,b,z;

scanf("%d:%d:%d",&a.h,&a.m,&a.s);

scanf("%d:%d:%d",&b.h,&b.m,&b.s);

z.s=(a.s+b.s)%60;

z.m=(a.m+b.m+(a.s+b.s)/60)%60;

z.h=(a.h+b.h+(a.m+b.m+(a.s+b.s)/60)/60)%24;

printf("%d:%d:%d\n",z.h,z.m,z.s);

return 0;

}

6、假设学生的进步信息包括学号、姓名、三门课程成绩以及个人平均成绩。输入n个学生的成绩信息,计算每门课程的平均分并输出。要求定义结构体实现。

 

#include<stdio.h>

#include<string.h>

int main()

{

    struct shenme

    {

        char num[20];

        char name[20];

        int x,y,z;

        double ave;

    }t[60];

    int n;

    scanf("%d",&n);

    int i;

    double x1=0,y1=0,z1=0;

    for(i=0;i<n;i++)

    {

        scanf("%s%s%d%d%d",t[i].num,t[i].name,&t[i].x,&t[i].y,&t[i].z);

        t[i].ave=(t[i].x+t[i].y+t[i].z)/3.0;

        x1+=t[i].x;

        y1+=t[i].y;

        z1+=t[i].z;

    }

    x1=x1/n;

    y1=y1/n;

    z1=z1/n;

    printf("%.2lf %.2lf %.2lf",x1,y1,z1);

    return 0;

}

 

 

7、使用递归函数实现求n!

递归定义如下

f(n)=1   n=1n=0

f(n)=n*f(n-1)   n>1

 

#include <stdio.h>

double fact(int n);

int main()

{

int n;

scanf("%d",&n);

printf("%lf\n",fact(n));

return 0;

}

double fact(int n)

{

double result;

if(n==1||n==0)

{

result=1;

}

else

{

result=n*fact(n-1);

}

return result;

}

 

 

8、使用递归函数计算xn

递归定义如下

f(n)=1   n=0

f(n)=x*f(n-1)   n>0

 

#include <stdio.h>

double fact(double x,double a);

int main()

{

double x,a;

scanf("%lf",&x);

a=x;

printf("%lf",fact(x,a));

return 0;

}

double fact(double x,double a)

{

double result;

if(x==0)

result=1;

else

{

result=a*fact(x-1,a);

}

return result;

}

 

 

 

9、编写递归函数revere(int n )实现将整数n逆序输出

递归出口直接输出n,如果n<=9,

递归式子输出个位数,如果n为多位数,再递归调用reversen/10)输出前n-1

 

#include <stdio.h>
void revere(int n);
int main()
{
int n;
scanf("%d",&n);
revere(n);
return 0;
}
void revere(int n)
{
if(n<=9)
printf("%d",n);
else
{
    printf("%d",n%10);
revere(n/10);
}
}

 

 

10、有5位学生的成绩存在文件score.txt中,包括学号、姓名和分数,文件格式如下:

301101 zhangwen 91

301102 chenhui 85

请读出文件的所有内容显示到屏幕上

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp1;
char ch;
if ((fp1 = fopen("score.txt", "r")) == NULL) {
printf("File open error!\n");
exit(0);
}
while (!feof(fp1)) {
ch = fgetc(fp1);
printf("%c", ch);
}
if (fclose(fp1)) {
printf("Can not close the file!\n");
exit(0);
}
return 0;
}

 

 

11、有一个文件in.txt存储的是包含英文字母、标点符号的一篇文章,现在请你写程序读出文件内容并将所有的英文字母都变为大写字母并输出在屏幕上。

#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp1;
char ch;
if ((fp1 = fopen("in.txt", "r")) == NULL) {
printf("File open error!\n");
exit(0);
}
while (!feof(fp1)) {
ch = fgetc(fp1);
if (ch >= 97 && ch <= 122)
printf("%c", ch - 32);
else
printf("%c", ch);
}
if (fclose(fp1)) {
printf("Can not close the file!\n");
exit(0);
}
}

 

 

12、从键盘输入行字符,包括英文字母和标点符号,请你将所有的英文字母都转换为小写字符并写入到文件out.txt

 

#include<stdio.h>

#include<stdlib.h>

int main()

{

FILE *fp1;

char ch=NULL;

if ((fp1 = fopen("out.txt", "a+")) == NULL) {

printf("File open error!\n");

exit(0);

}

while (ch != '\n') {

scanf("%c", &ch);

if (ch >= 65 && ch <= 90)

ch = ch + 32;

fputc(ch, fp1);

}

if (fclose(fp1)) {

printf("Can not close the file!\n");

exit(0);

}

 

13、已知奥运五环的5种颜色的英文单词按一定顺序排列,输入任意一个颜色的英文单词,从已有颜色中查找并输出该颜色的位置值,若没有找到,则输出“No Found”。要求定义指针数组char *color[5]={“red”,”blue”,”yellow”,”green”,”black”};实现

#include<stdio.h>

#include<string.h>

int main()

{

    char *color[5]={"red","blue","yellow","green","black"};

    char s[30];

    scanf("%s",s);

    int i,flag=0;

    for(i=0;i<5;i++)

    {

        if(strcmp(s,color[i])==0)

        {

            flag=1;

            printf("%d",i+1);

        }

    }

    if(flag==0)

    {

        printf("Not Found\n");

    }

    return 0;

}

 

14、编写程序,输入数字1~7,输出对应星期的英文单词要求定义指针数组char *week[8]={””,“Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”,”Sunday”};实现

 

#include<stdio.h>

#include<string.h>

 

int main()

{

    int n;

    scanf("%d",&n);

    char *week[8]={" ","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};

    printf("%s",week[n]);

    return 0;

}

 

15、编写程序,输入星期的英文单词,输出对应的数字(例如输入Monday,输出1;输入Sunday,输出7)。要求定义指针数组char *week[8]={””, “Monday”, ”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”,”Sunday”};实现

 

#include<stdio.h>

#include<string.h>

 

int main()

{

    char *week[8]={" ","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};

    char s[15];

    scanf("%s",s);

    int i;

    for(i=0;i<8;i++)

    {

        if(strcmp(s,week[i])==0)

        {

            printf("%d",i);

            break;

        }

    }

    return 0;

}

原创粉丝点击