第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;
}
第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;
}