以下整理自湖南大学考研真题。
2010年
1、编一程序,将字符串“computer”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,请用指针完成。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[] = "computer";
char *p;
p = str;
while(*p!='\0'){
printf("%c",*p);
p+=2;
}
// int i;
// char s[9] = "computer";
// char *p;
// p = s;
// printf("%d\n",sizeof(s));
// printf("%d\n",strlen(s));
// for(i=0; i<7; i+=2){
// printf("%c",*(p+i));
// }
return 0;
}
输出:
cmue
2、提示输入一个字符串“string”,然后在string里面每个字母间加一个空格,请用指针完成。
#include <stdio.h>
#include <stdlib.h>
void addSpace(char *a, char *b){
int lena = strlen(a);
int lenb = lena*2-1;
int i;
for(i=0; i<lenb; i++){
if(i%2==0){
*(b+i) = *(a+i/2);
}else{
*(b+i) = ' ';
}
}
*(b+i) = '\0';
}
int main()
{
int i;
char ch[10],str[20];
printf("请输入字符串“string”:\n");
gets(ch);
addSpace(ch, str);
puts(str);
return 0;
}
输入:
string
输出:
s t r i n g
3、随机产生20个[10,50]的正整数存放到数组中,并求数组中所有元素的最大值、最小值、平均值及各元素之和。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void createNum(int *str, int n){
srand((unsigned)time(NULL));
int i;
for(i=0; i<n; i++)
str[i]=rand()%41+10;
}
int strMax(int *str, int n){
int i;
int max = str[0];
for(i=1;i<n;i++)
if(max<str[i]) max=str[i];
return max;
}
int strMin(int *str, int n){
int i;
int min = str[0];
for(i=1;i<n;i++)
if(min>str[i]) min=str[i];
return min;
}
int strSum(int *str, int n){
int i,sum=0;
for(i=0;i<n;i++)
sum+=str[i];
return sum;
}
float strAvg(int *str, int n){
return 1.0*strSum(str, n)/n;
}
int main()
{
int n = 20,i;
int str[20];
createNum(str, n);
for(i=0;i<n;i++)
printf("%d ",str[i]);
printf("\n");
printf("max=%d\n",strMax(str,n));
printf("min=%d\n",strMin(str,n));
printf("sum=%d\n",strSum(str,n));
printf("avg=%f\n",strAvg(str,n));
return 0;
}
核心内容:随机数产生
//产生[X,Y]的随机数
#include <time.h>
srand((unsigned)time(NULL));
int a = rand()%(Y-X+1)+X;
2011年
没啥需要记录的。