贵州大学考研复试机试真题–c语言版
A、字符串翻转–给定一个字符串,反序输出。
思路:拿到一个字符串,求出其长度,然后逆序输出
#include<stdio.h>
#define N 100
int main(){
char str[N];
int i,cnt=0;
gets(str);//输入字符串
cnt = strlen(str);//获取字符串长度
for(i=cnt-1; i>=0; i--)//逆序输出字符串
printf("%c",str[i]);
return 0;
}
B、整除–输出100到1000之间能被5和6同时整除的数,输出格式为每10个数为一行。
注意:换行判断的位置!
#include<stdio.h>
int main(){
int i,cnt=0;
for(i=100; i<=1000; i++) {
if(i%5==0 && i%6==0){
printf("%d ",i);
cnt++;
if(cnt%10 == 0)
printf("\n");
}
}
return 0;
}
C、0和1的个数–给定一个int型整数,输出这个整数的二进制的0和1的个数。
作模2运算,先算1的个数,再拿32位减去1的个数。
#include<stdio.h>
int main(){
int n,i,cnt=0;
scanf("%d",&n);
for(i=0; n!=0; i++){
if(n%2 == 1)
cnt++;
n/=2;
}
printf("0的个数为%d,1的个数为%d\n",32-cnt,cnt);
return 0;
}
D、随机数–从1—20之间随机抽取5个数,输出抽取出来的5个数之和与剩余未被抽取的15个数之和的总和。
#include<stdio.h>
#define n 5
int main(){
int i,j,x,sum1=0,sum2=0,a[n]={
0};
//抽取出来的5个不重复的随机数
x = rand()% 20 + 1;
a[0] = x;
for(i=1; i<n; i++){
x = rand()%20+1;
a[i] = x;
for(j=0; j<i; j++){
if(a[i] == a[j]){
i-=1;