C语言的四个程序
现有四个程序。要求写出算法,流程图和代码。各位高手帮一下忙啊(分数绝对加够)1.将N个整数按输入时顺序逆序排列(要求在主函数中输入N个整数,调用排序函数,输出排序结果,通过指针实现)2.求一个字符串长度,在main函数中输入字符串,并输出其长度(要求函数的参数用字符串指针)3.编写一个函数,输入N为偶数时,调用函数1/2+1/4+...+1/n,将N为奇数时调用函数1+1/3。。。+1/n. 4.编写一个判别素数的函数,在主函数中输入一个整数,输出是否是素数的信息。小弟先在这边谢谢了。。。
答案://1.将N个整数按输入时顺序逆序排列(要求在主函数中输入N个整数,调用排序函数,输出排序结果,通过指针实现)
#include<stdio.h>
#include<stdlib.h>
typedef struct array
{ int value;
struct array *next;
}LINK;
void main()
{ void shuchu(LINK *p);
LINK *head,*p,*p1;int x;
head=(LINK *)malloc(sizeof(LINK));
head->next=NULL;
printf("请输入(以输入0结束):\n");
scanf("%d",&x);
p=(LINK *)malloc(sizeof(LINK));
p->value=x;
head->next=p;
p->next=NULL;
while(x!=0)
{ scanf("%d",&x);
p1=(LINK *)malloc(sizeof(LINK));
p1->value=x;
p1->next=p;
head->next=p1;
p=p1;
}
shuchu(head);
}
void shuchu(LINK *p)
{
LINK *p1=p;p1=p1->next;
do
{
p1=p1->next;printf("%5d",p1->value);
}
while(p1->next!=NULL);
printf("\n");
}
//2.求一个字符串长度,在main函数中输入字符串,并输出其长度(要求函数的参数用字符串指针)
#include <stdio.h>
#define N 100
void main()
{ char s[N];
int stringln(char s[]);
printf("please input the char!\n");
scanf("%s",s);
printf("%d\n",stringln(s));
}
int stringln(char s[])
{
int i;
for(i=0;s[i]!='\0';i++);
return (i);
}
//3.编写一个函数,输入N为偶数时,调用函数1/2+1/4+...+1/n,将N为奇数时调用函数1+1/3。。。+1/n.
#include<stdio.h>
void main()
{
int n;
void f1(int n);void f2(int n);
printf("请输入N的值:\n");
scanf("%d",&n);
if(n%2)
{
f1(n);
}
else
f2(n);
}
void f2(int n)
{
float sum=0;float i;
for(i=2;i<=n;i+=2)
{
sum+=1/i;
}
printf("%f\n",sum);
}
void f1(int n)
{
float sum=0;float i;
for(i=1;i<=n;i+=2)
{
sum+=1/i;
}
printf("%f\n",sum);
}
//4判断一个数是否是素数
#include<stdio.h>
void main()
{
int prime(int);
int n;
printf("\n请输入一个正整数:\n");
scanf("%d",&n);
if(prime(n))
printf("\n%d是一个素数。\n",n);
else
printf("\n%d不是一个素数。\n",n);
}
int prime(int n)
{
int flag=1,i;
for(i=2;i<n/2 && flag==1;i++)
if(n%i==0)
flag=0;
return(flag);
}
流程图加我QQ:393605067再给你,作业最好自己做啊
1, 排序
#include <stdio.h>
#include <stdlib.h>
void sort(int a[], int Num);
int main(void)
{
int N;
printf("input N : ");
scanf("%d", &N);
int *p = (int *) malloc(sizeof(int) * N);
printf("input %d integers : ", N);
for (int i = 0; i < N; ++i)
scanf("%d", &p[i]);
sort(p, N);
for (int i = 0; i < N; ++i)
printf("%-4d ", p[i]);
printf("\n");
free(p);
return EXIT_SUCCESS;
}
void sort(int a[], int Num)
{
int temp, i;
for (; Num > 1; --Num)
for (i = 0; i < Num - 1; ++i)
if (a[i] > a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
2, 字符串长度
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if (argc < 2)
fprintf(stderr, "Not parameter\n"), exit(-1);
for (int i = 1; i < argc; ++i)
printf("the size of \"%s\" : %d\n", argv[i], strlen(argv[i]));
return EXIT_SUCCESS;
}
3, 计数
#include <stdio.h>
#include <stdlib.h>
double func1(int N);
double func2(int N);
int main(void)
{
double (*pf_array[])(int) = {func1, func2};
char *str[] = {"func1", "func2"};
printf("please input a integer : ");
int N;
scanf("%d", &N);
printf("Use %s\n", str[N % 2]);
printf( "The result is %f\n", pf_array[N % 2](N) );
return EXIT_SUCCESS;
}
double func1(int N)
{
double sum = 0;
for (int i = 1; i <= N / 2; ++i)
sum += 1.0f / (2 * i);
return sum;
}
double func2(int N)
{
double sum = 0;
for (int i = 1; i <= (N + 1) / 2 ; ++i)
sum += 1.0f / (2 * i - 1);
return sum;
}
4, 判断质数
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int iszhishu(int N)
{
if ( (N != 2 && N % 2 == 0) || N <= 1)
return 0;
for (int i = 3; i <= sqrt(N); i += 2)
if ( N % i == 0)
return 0;
return 1;
}
int main(void)
{
printf("please input a integer : ");
int N;
scanf("%d", &N);
if (iszhishu(N))
printf("%d is zhishu\n", N);
else
printf("%d is not zhishu\n", N)
return EXIT_SUCCESS;
}
//By Jimly
//1题
#include <stdio.h>
#define MAX 50
//逆序函数
void Sort(int *num,int n)
{
int temp = 0;
for (int i = 0;i<n/2;i++)
{
temp = *(num+n-i-1);
*(num+n-i-1) = *(num+i);
*(num+i) = temp;
}
}
//主函数
int main()
{
int ayy[MAX];
int MaxSize = 0;
int *p = ayy;
printf("输入要输入的整数个数:");
scanf("%d",&MaxSize);
for (int i = 0;i<MaxSize;i++)
{
scanf("%d",p+i);
}
Sort(p,MaxSize);
printf("逆序结果:\n");
for (i = 0;i<MaxSize;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
return 0;
}//end
//2题
#include <stdio.h>
//求字符串长度函数,返回值为长度
int StringLength(char* tp)
{
for (int i = 0;*(tp+i)!='\0';i++)
{
}
return i;
}
//主函数
int main()
{
char str[100];
char *p = str;
printf("请输入字符串:");
scanf("%s",p);
printf("字符串的长度为:%d\n",StringLength(p));
return 0;
}
//3题
#include <stdio.h>
//求字符串长度函数,返回值为长度
double GetValue(int n)
{
double sum = 0;
if (n%2==0) //偶数
{
for (int i = 0;i<n/2;i++)
{
sum += (double)1/(2+i*2);
}
}
if (n%2) //奇数
{
for (int i = 0;i<n/2+1;i++)
{
sum += (double)1/(1+i*2);
}
}
return sum;
}
//主函数
int main()
{
int num = 0;
printf("请输入一个数:");
scanf("%d",&num);
printf("计算结果:%g\n",GetValue(num));
return 0;
}//end
//4题
#include <stdio.h>
#include <math.h>
bool IsPrimer(int n)
{
int m=(int)sqrt(n);
for(int i=2;i<=m;i++)
{
if(n%i==0) return false;
}
return true;
}
int main()
{
int num = 0;
printf("请输入数:");
scanf("%d",&num);
if (IsPrimer(num))
{
print
上一个:C语言合并链表的问题
下一个:C语言“保留整数”