问几个c语言的编程题

来源:百度知道 编辑:UC知道 时间:2024/07/04 10:20:58
1编一个程序,输入n个互不相等的整数存于数组中,并输出。程序如发现输入的数据已输入过,则要求重新输入。要求用指针实现。
参考程序:/* 用指针法在一维有序数组中插入数据程序 */
#include "stdio.h"
#define M 10
main( )
{
int a[M+1]={10,20,30,40,50,60,70,80,90,99};
int i,n,*p,*q;
printf("请输入要插入的数据:\n");
scanf("%d",&n);
a[M]=n;
for(p=a,i=0;i<=M;i++) /* 确定要插入的位置p */
if(n<=*(p+i))
{
p=p+i; /* p指向要插入数据的位置 */
break;
}
for(q=a+M-1;q>=p;q--) /* 元素后移 */
*(q+1)=*q;
*p=n; /* 插入数据 */
printf("\n插入数据后的数列:\n");
for(p=a,i=0;i<M+1;i++)
printf("%d ",*(p+i));
}
2请编写程序,判断一个字符串是否是回文。若是回文,输出“yes”,否则输出“no”。回文是顺读和倒读都一样的字符串(如ABCBA,或者12321就是回文)。要求用指针实现。
参考程序:/* 用指针实现的选择法排序程序 */
#include "stdio.h"
#define M 20
void main( )
{<

所有程序在win-tc和Dev-c++下试验通过,代码简练。
第一题:
/* 编一个程序,输入n个互不相等的整数存于数组中,并输出。程序如发现输入的数据已输入过,则要求重新输入。要求用指针实现。 */
#include <stdio.h>
#include <malloc.h>
int main( )
{
int i=0,j,k,n,flag,*p;
printf("Please input number of the digits:\n");
scanf("%d",&n);
p=(int *)malloc(n*sizeof(int));
printf("Please input %d digits one by one:\n",n);
do
{ flag=0;
scanf("%d",p+i);
for(j=0;j<i;j++)
{ for(k=j+1;k<i+1;k++)
if(*(p+k)==*(p+j))
{ printf("Input repetition! Please input again!\n");
flag=1;
break; /*如有重复立即退出该层循环,提高判断速度*/
}
if(flag==1)
break; /*如有重复立即退出该层循环,提高判断速度*/
}
if(flag==0)
i++;
}while(i<n);
printf("The input digits are:\n",n);
for(i=0;i<n;i++)
printf("%d\n",*(p+i));
system("pause");
return