c语言编程问题!!

给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超... 给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超过100,b在1至100之间。 展开
 我来答
爷已戒烟很多年
2014-12-15 · TA获得超过667个赞
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:131万
展开全部

你这个问题是非常扯淡的,前边的两个问题都是很简单的,但是后边那一个问题真心让人纠结,首先你要求整数数组,既然都要求是整数数组了,那你能在整数数组中出现的都是int类型,可是你要把数组中的出现ASCII的A~Z之间的整数转化成相应的字母,也就是char类型,不使用union或者其他的结构体一个数组之中可以出现不同类型的元素?我不知道这TM是谁告诉你这可以用一个简单的整数数组解决,出这个问题的人真心有些看不懂啊

kaixingui2012
推荐于2016-07-11 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6436万
展开全部
#include<stdio.h>
#include <time.h>
#include <stdlib.h>

#define MAX 100

int input_a( int a[] ) //随机生成n个整数,存到数组a中
{
int n,i;
srand(time(NULL));

n=rand()%(MAX-10)+10 ;
for( i=0;i<n;i++ )
{
a[i]=rand()%(3*MAX) ;
printf("%3d", a[i] );
if( (i+1)%10 == 0 )
printf("\n");
else
printf(" " );
}
printf("\n");
return n ;
}

int del_b( int a[],int n, int b ) //将a数组中,可以被b整除的所有元素删除,返回删除后的数组长度
{
int i,j;
for( i=0,j=0;i<n;i++ )
{
if ( a[i] % b )
a[j++]=a[i];
}
return j ;
}

void sort_a( int a[], int n ) //将数组a排序
{
int i,j;
for( i=0;i<n-1;i++ )
for( j=0;j<n-i-1;j++ )
if ( a[j] > a[j+1] )
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}

void out_a( int a[], int n ) //按要求输出数组,10个元素一换行
{
int i;
for( i=0;i<n;i++ )
{
if ( a[i] >='A' && a[i] <= 'Z' )
{
printf("%3c",a[i] );
}
else
printf("%3d", a[i] );
if( (i+1)%10 == 0 )
printf("\n");
else
printf(" " );
}
printf("\n");
}

int main()
{
int a[MAX],b;
int n ;

n=input_a( a );

printf("input b: " );
do { scanf("%d", &b );} while ( b<1 || b>=100 ); //控制b在1-100之间

n=del_b( a , n , b ) ;

sort_a( a , n ) ;

out_a( a, n );

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寒寒家
2014-12-15 · TA获得超过2921个赞
知道大有可为答主
回答量:1482
采纳率:100%
帮助的人:1985万
展开全部

您好,转换为对应的字母之后,是要打印输出么?(输出对应的A-Z的字母?)

下面的C程序中,是输出的时候,遇到A-Z,就打印相应的字符

测试通过,如果有疑问,欢迎交流

#include<stdio.h>
void BubbleSort(int *list,int len) //冒泡排序
{
int i,j,temp;
for(i=0;i<len - 1;i++)
for(j=0;j<len-i - 1;j++) 
{
if(list[j+1]<list[j])
{
temp=list[j+1];
list[j+1]=list[j];
list[j]=temp;
}
}
}

void remove_b(int *src, int & num, int b){//删除能被b整除的元素
int next_idx = 0;
int cur_idx = 0;
while(cur_idx < num){
if(src[cur_idx] % b ==0){
cur_idx++;
}else{
src[next_idx] = src[cur_idx];
cur_idx++;
next_idx++;
}
}
num = next_idx;
}

void print_tar(int * src, int num){ //输出,遇到A-Z就输出字符
for(int i =0; i<num; i++){
if(src[i] >='A' && src[i] <= 'Z'){
printf("%c ", src[i]);
}else{
printf("%d ", src[i]);
}
}
}

int main(){
int *src;
int num;
scanf("%d", &num);
src = new int[num];
for(int i = 0; i< num; i++)
scanf("%d", &src[i]);
int b;
scanf("%d", &b);
remove_b(src, num, b);
BubbleSort(src, num);
print_tar(src, num);
delete src;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-12-15 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6636万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
int main(void){
int a[100],b,i,j,k,n,atmp[100];
srand((unsigned)time(NULL));
for(i=0;i<100;printf("%d ",a[i++]=rand()%300));
printf("\nInput b: b=");
scanf("%d",&b);
for(n=i=0;i<100;i++){
if(a[i]%b==0) continue;
atmp[n++]=a[i];
}
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(atmp[k]>atmp[j]) k=j;
if(k!=i){
j=atmp[k];
atmp[k]=atmp[i];
atmp[i]=j;
}
}
for(i=0;i<n;i++)
if((a[i]=atmp[i])>='A' && a[i]<='Z')
printf("%c ",a[i]);
else printf("%d ",a[i]);
printf("\n");
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水上漂汤
2014-12-15 · TA获得超过1万个赞
知道大有可为答主
回答量:1830
采纳率:71%
帮助的人:1443万
展开全部
替换为对应字母,然后呢?输出还是保存起来?
要算法还是整个程序?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式