2012年版,内部收录各种朱鸣华要求的上机作业,是学弟学妹的理想参考~
http://doc.xuehai.net/view/d5847a8683d049649b66589d.html
1.
输入一行字符,将其中的字符从小到大排列后输出。使用冒泡排序。*/
// 不使用指针编程
#include "stdio.h"
#include "string.h"
void px(char c1[]先把最大的数挑到最后
{
int i,j,n;
char t;
n=strlen(c1);
for(i=0;i
for(j=1;j
if(c1[j-1]>c1[j])
{
t=c1[j-1];
c1[j-1]=c1[j];
c1[j]=t;
}
}
int main()
{
char s1[20];
gets(s1);
px(s1);
printf("%s",s1);
}
2.
输入一行字符,将其中的字符从小到大排列后输出。*/
// 使用指针编程。(选择法排序)
#include "stdio.h"
#include "string.h"
void px(char *p)
{
char *p1,*p2,temp;
for(; *p!='\0'; p++)
{
p1=p;
for(p2 = p ; *p2!='\0'; p2++)
{
if (*p1>*p2) p1=p2 ;
}
temp = *p;
*p = *p1;
*p1 = temp;
}
}
int main()
{
char s1[20];
gets(s1);
px(s1);
printf("%s",s1);
}
3.
用指针编写函数 : insert(s1,s2,f), 其功能是在字符串 s1 中的指定位置
f 处插入字符 串 s2. 插入后的字符串仍然放在s1中。*/
#include
#include
void insert(char *s1, char *s2, int n)
{
int n1 ,n2,i,j;
n1= strlen(s1);
n2 =strlen(s2);
if(n > n1 || n < 0)
{
printf("位置n错误!\n");
return ;
}
for(i=n1,j=n1+n2;i>=n; i--, j--)
s1[j]=s1[i];
for(i=n;*s2 != '\0'; i++)
s1[i]=*s2++;
s1[n1+n2] = '\0';
}
int main()
{
char s1[40] = {"I am going!"}, s2[20] = "not ";
insert(s1, s2, 5);
printf("%s\n", s1);
return 0;
}
4.
求二维数组每行的平均值。(使用指向数组的指针变量) */
#include "stdio.h"
float aev(int *p,int n)
{
int i;
float sum=0;
for(i=0;i
sum=sum+*(p+i);
return sum/n;
}
main()
{
int a[3][4],i,j,(*p)[4];
p=a;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",*(a+i)+j);
for(i=0;i<3;i++)
printf("%f\n",aev(*(p+i),4));
}
5.
: 编写函数: output 和 input ,其功能分别与 gets 和 puts 相同,函数中用 getchar 和 putchar 读入和
输出字符。 */
#include "stdio.h"
void input(char s[])
{
char *p=s-1;
do
{
p++;
*p=getchar();
}while(*p!='\n');
*p='\0';
}
void output(char s[])
{
char *p=s;
for (;*p!='\0';p++)
putchar(*p);
printf("\n");
}
main()
{
char s[10];
printf("输入字符串:\n");
input(s);
printf("该字符串为:\n");
output(s);
}
6.
: 编写程序,输入10个整数,用指针法实现将最小的数与第1个数交换,最大的数
与最后一个数交换。*/
#include
int main ()
{
int a[10],i,t,*p=a,*min,*max;
printf("请输入数组a:\n");
for(i=0
;i<10;i++)
scanf("%d",&a[i]);
min=max=a;
for(;p
if(*p>*max) max=p;
t=a[9];a[9]=*max;*max=t;
for(p=a;p<