第一题:
#include<stdio.h>
int main()
{
int a[100];
for(int i=0;i<100;i++)
scanf("%d",&a[i]);
int x=0,y=0,z=0;//分别是正数、负数、零的个数
for(int i=0;i<100;i++){
if(a[i]==0)
z++;
if(a[i]>0)
x++;
if(a[i]<0)
y++;
}
printf("正数个数: ");printf("%d\n",x);
printf("负数个数: ");printf("%d\n",y);
printf("零的个数: ");printf("%d\n",z);
return 0;
}
第二题:
#include<stdio.h>
int main()
{
int N;
printf("输入N: ");scanf("%d",&N);
printf("输入这N个数: ");
int *a;
a=new int [N];//由于N本来未定,所以设置动态数组存储,当然来如果N本来是定的话,譬如100,你可以在main函数前面写一个#define N 100(注意没有分号;)
//然后该项直接是int a[N];即可
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
int k=0,temp=a[0];//我这里使用的是第i次查找的时候找出第i大的数字,放在数组的第i个位置,k是存放最大数原本的位置的下标,temp是它的值。
for(int i=0;i<N;i++){//这里的i跟上面所说的i有点出入,这里的i是指的下标,与上面的相差1;
int j;
for(j=i+1;j<N;j++){
if(a[j]>temp){
k=j;temp=a[k];
}//如果a【j】的值比temp大的话,temp换成a【j】;
}
a[k]=a[i];a[i]=temp;//比完一次后,将最大的数放在前面去。
k=i+1;temp=a[k];//为下一轮准备
}
for(int i=0;i<N;i++)
printf("%d\t",a[i]);
printf("\n");
delete []a;a=NULL;//如果不是动态数组的话,这两句不需要
return 0;
}
第三题:
//第三个函数我帮你设定在输入字符串前先确定字符串的长度,不然很麻烦……
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int N;
printf("字符串长度: ");scanf("%d",&N);
printf("输入字符串: ");
char *a;
a=new char [N];
for(int i=0;i<N;i++){
cin>>a[i];//抱歉,我对c语言真的不熟悉,这里用了c++的,这里的意思是输入字符串,你看一下能不能自己改吧
}
char temp;
for(int i=0;i<N/2;i++){//这里是交换
temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;
}
for(int i=0;i<N;i++)
cout<<a[i];//这里是输出
printf("\n");
delete []a;a=NULL;;
return 0;
}
//你看一下谁能帮忙把那两句c++变成c语言吧。我尽力了……
温馨提示:答案为网友推荐,仅供参考