36.
#include <stdio.h>
int main()
{
void count(char *p);
char str[100], *p=str;
printf("请随便输入一个字符串:");
gets(p);
printf("您输入的字符串为:\n%s\n\n", p);
count(p);
return 0;
}
void count(char *p)
{
int u,l,s,n,o;
u=l=s=n=o=0;
while(*p!='\0'){ // while(*p++!='\0') 我这样写似乎是错的,不知道为什么
if(*p>='A' && *p<='Z'){
u++;
}
else if(*p>='a' && *p<='z'){
l++;
}
else if(*p==' '){
s++;
}
else if(*p>='0' && *p<='9'){
n++;
}
else{
o++;
}
p++;
}
printf("您输入的字符串中:\n大写字母:%3d个\t小写字母:%3d个\t空格:%3d个\t数字:%3d个\t其他字符:%3d个\t", u,l,s,n,o);
}
37.#include<stdio.h>
void convert(int (*p)[3])
{
int i,j,temp;
for(i=0;i<3;i++)
for(j=0;j<i;j++)
{
temp=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+j)+i);
*(*(p+j)+i)=temp;
}
}
int main()
{
int a[3][3];
int (*p)[3],i,j,temp;
p=a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
convert(p);
printf("after convert:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d ",*(*(p+i)+j));
printf("\n");
}
return 0;
}
38.#include<stdio.h>
void reverse(float *p,int n)
{
float temp;
int i;
for(i=0;i<=n/2;i++)
{
temp=*(p+i);
*(p+i)=*(p+n-1-i);
*(p+n-1-i)=temp;
}
for(i=0;i<n;i++)
printf("%5.1f",*(p+i));
printf("\n");
}
int main()
{
int i,n;
float a[30];
float *p=a;
printf("the number of numbers:\n");
scanf("%d",&n);
printf("input numbers:\n");
for(i=0;i<n;i++)
scanf("%f",a+i);
reverse(p,n);
return 0;
}
39.不会做`
40.
#include<stdio.h>
#include<math.h>
int prime(int m);
int main(int argc,char const *argv[])
{
int m,n,i;
int sum=0,count=0;
printf("请输入两个正整数:");
while(1)
{
scanf("%d%d",&m,&n);
if(m>=1&&m<=500&&n>=1&&n<=500&&m<=n)
break;
printf("请重新输入:");
}
for(i=m;i<=n;i++)
{
if(prime(i))
{
count++;
sum+=i;
}
}
printf("%d和%d之间有%d个素数,它们的和为%d\n",m,n,count,sum);
return 0;
}
int prime(int m)
{
int i;
int ret=1;
if(m==1)
ret=0;
for(i=2;i<=sqrt(m);i++)
{
if(m%i==0)
{
ret=0;
break;
}
}
return ret;
}