807

阅读: 评论:0

807

807

807-成都信息工程大学研究生入学考试-程序设计代码

  • 2015
    • 16题
    • 17题
    • 18题
      • 方法一
      • 方法二
    • 19题
  • 2016
    • 24题
    • 25题
    • 26题
  • 2017
    • 24题
    • 25题
    • 26题
  • 2018
    • 24题
    • 25题
    • 26题
  • 2019
    • 24题
    • 25题
    • 26题

gitee地址: .git

2015

16题

#include <stdio.h>
#include <string.h>
int main(){int i = 0,num = 0;char s[30];puts("请输入一行英语字符:");gets(s);while (s[i]){// 统计空格数if(s[i++] == ' ') num++;}// 如果只有一个单词 则没有空格 需要加一个// 本来上面的循环 就少了一个单词数量if(s[0]!='')num++;printf("有%d个单词。",num);return 0;}

17题

#include <stdio.h>
#define N 10
struct Worker{char name[20]; //姓名int num; //工资号
} Workers[N];
//输入信息
void GetInfo(struct Worker w[N]){int i;printf("请输入%d个员工信息n",N);for(i=0;i<N;i++){scanf("%s%d",w[i].name,&w[i].num);}
}
// 排序
void Sort(struct Worker w[N]){int i,j;struct Worker temp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(w[j].num < w[j+1].num){temp = w[j];w[j] = w[j+1];w[j+1] = temp;}}}
}
int main(){int i;GetInfo(Workers);Sort(Workers);//输出for(i=0;i<N;i++){printf("%s--%dn",Workers[i].name,Workers[i].num);}return 0; 
}

18题

18题有点难,可能是我方法用错了,折腾了大半个小时才从敲出来两个方法,不知道考试的时候没有调试怎么才能写出正确的代码。
两个方法,感觉复杂度差不多。

方法一

#include <stdio.h>
#include <string.h>
char *fun(char *str,int m){int i,j,n = strlen(str);for(i=0;i<m;i++){// 先把前面的m个元素插入到表后面str[n+i] = str[i];  }//添加完毕后再末尾添加  来表示结束str[n+m] = '';// 每次整体向前移动一位。一共移动m次for(i=0;i<m;i++){ for(j=0;j<strlen(str);j++){str[j] = str[j+1];}}return str;
}
int main(){char s[100];int m;puts("请输入一个字符串:n");scanf("%s",s);puts("请输入要移动几位:n");scanf("%d",&m);printf("%sn",fun(s,m));return 0; 
}

方法二

#include <stdio.h>
#include <string.h>
char *fun(char *str,int m){int i,j,n=strlen(str);char nstr[100];// 将str的前m位添加给新数组nstrstrncpy(nstr,str,m);// 将str和nstr合并strcat(str,nstr);//添加结束符号str[n+m] = '';// 每次整体向前移动一位。一共移动m次for(i=0;i<m;i++){ for(j=0;j<strlen(str);j++){str[j] = str[j+1];}}return str;
}
int main(){char s[100];int m;puts("请输入一个字符串:n");scanf("%s",s);puts("请输入要移动几位:n");scanf("%d",&m);printf("%sn",fun(s,m));return 0; 
}

19题

#include <stdio.h>
#define N 100
int main(){//申明文件指针FILE *fp;//打开文件 w+ 写fp = fopen(&#","w+");char c;// 如果不是#就将 输入的字符写入到文件 否则结束循环while ((c = getchar()) != '#'){fputc(c,fp); }// 关闭文件流fclose(fp);return 0; 
}

2016

24题

#include <stdio.h>
int main(){int score;char grade;printf("请输入成绩:");scanf("%d",&score);if(score < 0 || score > 100){printf("Error Input!");return 0;  //退出程序}switch (score / 10) //将成绩转成一位数,例如 74 / 10 = 7{case 9: grade = 'A'; break;case 8: grade = 'B'; break;case 7: grade = 'C'; break;case 6: grade = 'D'; break;default: grade = 'E';}// 输出printf("分数为%d,等级为:%c",score,grade);return 0;
}

25题

#include <stdio.h>
#include <string.h>
int main(){int i,n;char s[30];gets(s);n = strlen(s);  //获取字符串长度for(i=0;i< n/2;i++){  // 循环数组的一半即可if(s[i] != s[n-i-1]){  // 数组首位是否一致printf("No");   // 不一致 打印No ,结束程序return 0;}}printf("Yes");  //正常退出程序,说明是回文数return 0;
}

26题

#include <stdio.h>
#include <stdlib.h>
int main(){int **s,i,j,n,sum = 0;printf("请输入维数:");scanf("%d",&n);s = (int**) malloc(sizeof(int*) * n);  //为二维数组分配行内存for(i=0;i<n;i++){s[i] = (int*)malloc(sizeof(int) * n);  //为二维数组分配列内存}for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&s[i][j]);  //给数组各元素赋值if( i==j ){sum = sum + s[i][j]; //计算对角线的和}}}for(i=0;i<n;i++){  //输出for(j=0;j<n;j++){printf("%3d",s[i][j]);}printf("n");  //换行}printf("sum = %d",sum);return 0;
}

2017

24题

#include <stdio.h>
#include <string.h>
int main(){int i,eng = 0,speace = 0,num = 0,other = 0;char s[30];gets(s); //获取用户输入的字符串for(i=0;i<strlen(s);i++){  if( (s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')) eng++; //统计英文字母else if(s[i] >= '0' && s[i] <= '9') num++; //统计数字else if(s[i] == ' ') speace++; //统计空格else other++; //统计其他字符}// 输出printf("英文字母有%d个,空格有%d个,数字有%d个,其他字符有%d个",eng,speace,num,other);return 0;
}

25题

#include <stdio.h>
int main(){int i,j,k;for(i=0;i<7;i++){for(j=0;j<i;j++){  //输出i个空格printf(" ");}for(k=0;k<7;k++){ //输出7个*printf("*");}printf("n");  //换行}return 0;
}

26题

#include <stdio.h>
#define N 4
typedef struct student{ //定义结构体char name[10];float lang;float mat;float eng;
} student;  //重命名为student
int main(){int i,index=0;float ave,max = 0;student s[N]; //定义结构体数组printf("请输入学生姓名和成绩:");for(i=0;i<N;i++){  //循环给结构体数组赋值scanf("%s%f%f%f",s[i].name,&s[i].lang,&s[i].mat,&s[i].eng);}for(i=0;i<N;i++){ave = (s[i].lang + s[i].mat + s[i].eng) / 3;  //算出每个人平均分if(ave > max){  //若大于最高分max = ave; //重新赋值最大值index = i; //记录下标}}// 输出printf("name: %s, 语文: %2.2f, 数学: %2.2f, 外语:%2.2f,平均分:%2.2f",s[index].name,s[index].lang,s[index].mat,s[index].eng,max);return 0;
}

2018

24题

#include <stdio.h>
int main(){int i,j;for(i=1;i<=9;i++){ //控制行for(j=1;j<=i;j++){ //控制列printf("%d*%d=%dt",i,j,i*j);}printf("n"); //换行}return 0;
}

25题

#include <stdio.h>
#define N 100
struct people{char name[10]; //姓名int gender; //性别 1是男  0是女int age;  //年龄
}p[N];
int main(){//man[0]存0-29岁、man[1]存30-59、man[2]存60以上人数,woman存女的人数int i,man[3]={0},woman[3]={0}; for(i=0;i<N;i++){scanf("%s%d%d",p[i].name,&p[i].gender,&p[i].age);}for(i=0;i<N;i++){if(p[i].gender == 0){ //统计女生if(p[i].age>=0 && p[i].age<30){woman[0]++;}if(p[i].age>=30 && p[i].age<59){woman[1]++;}if(p[i].age>=60){woman[2]++;}}else{ //统计男生if(p[i].age>=0 && p[i].age<30){man[0]++;}if(p[i].age>=30 && p[i].age<59){man[1]++;}if(p[i].age>=60){man[2]++;}}}//输出printf("男生: 0-29岁:%d个,30-59岁:%d个,60岁以上:%d个n",man[0],man[1],man[2]);printf("女生: 0-29岁:%d个,30-59岁:%d个,60岁以上:%d个n",woman[0],woman[1],woman[2]);return 0;
}

26题

#include <stdio.h>
#include <string.h>
int main(){char s1[30],s2[30],i,j=0;gets(s1);for(i=0;i<strlen(s1);i++){if(s1[i] < '0' || s1[i] > '9'){  //如果不是数字s2[j] = s1[i];  //将不是数字的字符赋值给s2j++;//j控制s2的索引,自增1}}s2[++j] = '';  //添加新的字符结束标志//输出新的字符串printf("%sn",s2);return 0;
}

2019

24题

#include <stdio.h>
#define M 4
#define N 5
int fun(int a[M][N],int m,int n){int i,j,sum = 0;for(i=0;i<m;i++){for(j=0;j<n;j++){if(i == 0 || i == m-1){  //第一行和最后一行的元素求和sum = sum + a[i][j];}else if(j == 0 || j == n-1){  // 第一列和最后一列元素(除了第一行和最后一行)求和sum = sum + a[i][j];}}}return sum;
}
int main(){int a[M][N],i,j;printf("请输入%dX%d大小的数组:",M,N);for(i=0;i<M;i++){  //输入二维数组for(j=0;j<N;j++){scanf("%d",&a[i][j]);}}printf("数组的周边元素之和为:%d",fun(a,M,N));return 0;
}

25题

#include <stdio.h>
#define N 3
struct student{int id; //学号int math; //数学成绩int C; //C语言成绩
} students[N],max_stu[N];  //students记录所有学生信息,max_stu记录C语言成绩最高的学生记录。
int main(){int i,j = 0,max = 0;printf("请输入%d个学生的信息:n",N);for(i=0;i<N;i++){scanf("%d%d%d",&students[i].id,&students[i].math,&students[i].C);}//找到最高分for(i=0;i<N;i++){if(max < students[i].C){max = students[i].C;}}//找到最高分对应的学生,加入到数组中去,并统计人数for(i=0;i<N;i++){if(max == students[i].C){max_stu[j] = students[i];j++;}}//输出printf("C语言成绩最高的有%d个n",j+1);for(i=0;i<=j;i++){printf("学号:%d,数学:%d,C语言:%dn",max_stu[i].id,max_stu[i].math,max_stu[i].C);}return 0;
}

26题

#include <stdio.h>
#include <string.h>
#define N 10
#define M 20
void sort(char s[N][M],int type){int i,j;char temp[20];if(type == 1){ //按照字母递增for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(strcmp(s[j],s[j+1]) > 0){strcpy(temp,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],temp);}}}}if(type == 0){ //按照字母递减for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(strcmp(s[j],s[j+1]) < 0){strcpy(temp,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],temp);}}}}//输出printf("排序后的结果为:n");for(i=0;i<N;i++){printf("%sn",s[i]);}}
int main(){int i,type;char s[N][M];printf("请输入排序的方式,1为按照字母递增,0为按照字母递减n");scanf("%d",&type);getchar();  //吸收一个回车for(i = 0; i<N;i++){scanf("%s",s[i]);}sort(s,type);return 0;
}

本文发布于:2024-02-01 18:45:21,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170678432238694.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23