发几个我写的C语言作业程序 请看清题目 进来批评我程序不好的热烈欢迎 如果想进来吐槽我的就请别进了。。
说一句不好听的:进来批评我程序不好的我热烈欢迎 您要进来只说神马【发程序有什么目的】 【有什么意义】 一类的挑事的话 嘿嘿 请自觉散退好不。。 谢谢合作已知问题:
交换的那个用的是奇技淫巧
最好先写main() 写声明
for写的烂
编写一个函数void swap(int *x,int *y),其中的 x,y都是指向int的指针,功能是实现x,y所指向的两个int变量的值的交换。并写出函数调用过程。
程序代码:
#include<stdio.h> void swap(int *a,int *b) { /* swap two nums */ *a ^= *b; *b ^= *a; *a ^= *b; } int main(void) { int a = 0,b = 0; printf("Please input a,b:"); scanf("%d,%d",&a,&b); printf("before swap: a=%d,b=%d\n",a,b); swap(&a,&b); printf("after swap: a=%d,b=%d\n",a,b); return 0; }
编写函数int delnum(int *a , int num , int n),用于在长度是n的数组a中,删除一个值为num的元素。删除后数组的长度作为函数的返回值返回。注意,num在数组中可能不只一个。
程序代码:
#include<stdio.h> #define N 10 /* return numbers in new array */ int delnum(int *a,int num,int n) { int buf[N] = {0}; int i = 0; int j = 0; for (; i<N; i++) { if (a[i] != num) { buf[j++] = a[i]; } } memcpy((void *)a,(void *)buf,(j)*sizeof(int)); return (j); } int main(void) { int num = 0,i = 0,n = 0; int a[N] = {0}; printf("please input a number to delete:"); scanf("%d",&num); printf("please input %d numbers:\n",N); for (; i<N; i++) { scanf("%d",(a+i)); } n = delnum(a,num,N); for (i=0; i<n; i++) { printf("%d ",a[i]); } return 0; }
编写一个函数char *link(char *s1,char *s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中,函数返回值为字符数组s1的首地址。
程序代码:
#include<stdio.h> #include<string.h> #define N 50 char *link(char *s1,char *s2) { char *p1 = NULL; char *p2 = NULL; char buf[N*2] = {'\0'}; char *pbuf = buf; p1 = s1; p2 = s2; while(*(p1)!='\0'||*(p2)!='\0') { if (*(p1)!='\0') { *(pbuf++) = *(p1++); } if (*(p2)!='\0') { *(pbuf++) = *(p2++); } } /* can not return a stack address */ strcpy(s1,buf); return s1; } int main(void) { char a[N*2] = {'\0'},b[N] = {'\0'}; printf("Please input two strings(max length is %d):\n",N); gets(a); gets(b); if (strlen(a)+strlen(b)>N) { printf("\nString too long!\n"); return 0; } link(a,b); puts(a); return 0; }
给定主函数,编写三个函数input()、sort()、output(),分别实现数组元素的输入,数组元素的排序(升序)和数组元素的输出。
程序代码:
#include<stdio.h> #define N 10 int input(int *a,int n) { int i = 0; for (; i< n; i++) { scanf("%d",(a+i)); } return 0; } int sort(int *a,int n) { int i = 0; int j = 0; int i_min = 0; for (; i<n; i++) { i_min = i; for (j=i; j<n; j++) { if (a[j] < a[i_min]) { i_min = j; } } if (i != i_min) { a[i_min] ^= a[i]; a[i] ^= a[i_min]; a[i_min] ^= a[i]; } } return 0; } int print(int *a,int n) { int i = 0; for (; i<n; i++) { printf("%d ",a[i]); } return 0; } int main(void) { int a[N] = {'\0'}; printf("Input %d numbers:\n",N); input(a,N); sort(a,N); print(a,N); return 0; }
[ 本帖最后由 zklhp 于 2011-5-15 22:22 编辑 ]