发几个我写的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 编辑 ]









