C语言函数编程

1。写一个函数,输入一行字符,将其中最长的单词输出~
2。写一个函数,是给定的一个二维数组(4*4)行列互换~~
哪个老师指点下,有追加分~

1.
#include<stdio.h>
#include<string.h>
void main()
{
char a[20][20],c;
int i,j,m=0;
for(i=0;i<20;i++)
for(j=0;j<20;j++)
a[i][j]='\0';

j = 0;
c=getchar();//先获取第一个字符
for(i=0;c!='\n';)
{
if(c != 32)
{
a[i][j] = c;
j++;//控制列存储
}
else
{
a[i][j] = '\0';//每一行的最后一个字符上字符串结束标志
i++;//控制行存储
j = 0;//重新开始一行了,所以列号要重新计数
}
c=getchar();
}

for(i=0;i<19;i++)
if(strlen(a[i])<strlen(a[i+1]))
m=i+1;

printf("%s\n",a[m]);
}

2.
#include<stdio.h>
void main()
{
int num[4][4],m,i,j;
printf("请输入数组:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&num[i][j]);

for(i=0;i<4;i++)
for(j=0;j<i;j++)
{
m=num[i][j];
num[i][j]=num[j][i];
num[j][i]=m;
}
printf("重排后的结果为:\n");

for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d ",num[i][j]);
printf("\n");
}
}
终于敲完了,累死我了,都是利用的数组以前的知识,看一看吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-04-18
/*1。写一个函数,输入一行字符,将其中最长的单词输出~
**2。写一个函数,是给定的一个二维数组(4*4)行列互换~~
*/

/*========第一题==========*/
#include <stdio.h>
#include <string.h>
#define MAXSIZE 300
void main()
{
int alphabetic (char);
int longest (char[]);
int i;
char line[MAXSIZE];
printf("请输入字符串: \b");
gets(line);
printf("最长的单词为:");
for(i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("\n");
}
int alphabetic(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else
return(0);
}
int longest (char string[])
{
int len=1,i,length=1,flag=1,index=0,point;
for(i=0;i<=(int)strlen(string);i++)
if(alphabetic(string[i]))
{
if(flag) //判断前位是否是空格
{
point=i;
flag=0;
}
else
len++;
}
else
{
flag=1;
if(len>length)
{

length=len;
index=point;
}
len=1;
}
printf("\n长度为:%d ",length);

return (index);
}

//================第二题================
#include <stdio.h>
#include <stdlib.h>

int main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int x,y,temp;
printf("置换前的数组: \n" );
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
printf("%3d",num[x][y]);
}
printf("\n");
}
for(x=0;x<4;x++) /*开始交换元素值*/
{
for(y=x+1;y<4;y++) //可以这样交换.
{
temp=num[x][y];
num[x][y]=num[y][x];
num[y][x]=temp;
}
printf("\n");
}
printf("置换后的数组: \n" );
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
printf("%3d",num[x][y]);
}
printf("\n");
}
printf("\n");
return 0;
}
第2个回答  2007-04-18
/*=========第二题================*/
#include<stdio.h>
main()
{int i,j;
int a[4][4];//这里说是给定的二维数组意思是已经知道了的
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[j][i]=a[i][j];

...//就是这样换
第3个回答  2007-04-18
第一个题代码不想写了
设置一个标志位Is_Char初始化为false
设置一个int MaxCount他存放目前发现的最长字符的计数。
设置一个int Count 他存放当前这个单词的长度。
对每次输入的getchar任意字符存储进一个大数组,再判断:
输入空字符时候,Is_Char=false; Count=0;
输入字符时Is_Char=true; Count++; 此时判断if(Count>MaxCount) 那么MaxCount=Count;并把当前的大数组的下标存进int MaxEndMark.
当输入结束时,用得到的MaxCount,MaxEndMark打印出数组中的元素。
第二题楼上的程序修改后如下:
#include<stdio.h>
void func(int a[4][4])
{int i,j,temp;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
相似回答