c语言编程问题!!
给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超...
给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超过100,b在1至100之间。
展开
7个回答
展开全部
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好,转换为对应的字母之后,是要打印输出么?(输出对应的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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//#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;
}
#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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
替换为对应字母,然后呢?输出还是保存起来?
要算法还是整个程序?
要算法还是整个程序?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询