1.打印出1~9999之间的所有同构数。所谓同构数是指一个数如果出现在该数平方的右端,该数就是同构数。如5,25都是同构数。要求同构数的判断通过自定义函数来实现。
#include<stdio.h>
int tgshu(int n);
void main(){
int n;
for(n=1;n<10000;n++)
if (tgshu(n)) printf(%d是同构数\n",n);
}
int tgshu(int n){
int d=1,nn,k=0,t;
nn=n*n;
t=n;
while(t!=0){
d=d*10;
t=t/10;
}
if(nn%d==n) return 1;
else return 0;
}
2.称用 1和 0组成的串为“零幺串”,只用 1组成的串为“幺串”,只用 0组成的串为“零串”。写 一个函数,使得对任给的零幺串 S,将返回值N1和N0,其中N1表示 S中最长的幺串长度,N0表示 S 中最长零串长度。
#define MAX 100
void main(void){
char s[MAX];
int i=0;
int nO=0,n1=0;
int temp0=0,temp1=0;
scanf("%s",s);
while(s[i])
if(s[i]=='0'){
temp0++;
temp1=0;
}
if(temp0>n0){
n0=temp0;
}
if(s[i]=='1'){
temp1++;
temp0=0;
}
if(temp1>n1){
n1=temp1;
}
i++;
}
printf(“最长的\"零串\"中零的个数为%d\n",n0);
printf(“最长的\"幺串\"中幺的个数为%d\n”,n1);
}
3.键盘任意输入某班20个学生的姓名和成绩,输出最高分及不及格学生的人数。要求分别用两 个自定义函数求最高分和不及格人数。
#defineN 20
typedef struct{
char name[10];
int score;
} datatype;
int max(datatype stu[]);
int num(datatype stu[]);
void main(){
datatype stu[N];
int i,max_score,n;
printf(“输入%d学生信息:\n",N);
for(i=0;i<N;i++)
scanf("%s%d",stu[i].name,&stu[i].score);
max_score=max(stu);
n=num(stu);
printf(“最高分:%d;不及格人数%d",max_score,n);
}
int max(datatype stu[]){
int m,l;
m=0;
for(i=1;i<N;i++)
if(stu[i].score > stu[m].score)
m=i;
return stu[m].score;
}
int num(datatype stu[]){
int i,n=0;
for(i=0;i<N;i++)
if(stu[i].score<60)
n++;
return n;
}